на jQuery.триггер('Нажмите') не работает
кажется, что я просто не могу понять триггер jQuery ('click')
11 ответов
вам нужно использовать jQuery('#bar')[0].click();
для имитации щелчка мыши по фактическому элементу DOM (не объект jQuery), вместо использования .trigger()
метод jQuery.
Примечание: DOM Уровень 2 .click()
не работает некоторые элементы в Safari. Вам нужно будет использовать обходной путь.
это поведение JQuery. Я не уверен, почему он работает таким образом, он только запускает функцию onClick по ссылке.
попробуй:
jQuery(document).ready(function() {
jQuery('#foo').on('click', function() {
jQuery('#bar')[0].click();
});
});
вам просто нужно положить небольшое событие тайм-аута, прежде чем делать .click()
вот так:
setTimeout(function(){ $('#btn').click()}, 100);
см. мою демонстрацию:http://jsfiddle.net/8AVau/1/
jQuery(document).ready(function(){
jQuery('#foo').on('click', function(){
jQuery('#bar').simulateClick('click');
});
});
jQuery.fn.simulateClick = function() {
return this.each(function() {
if('createEvent' in document) {
var doc = this.ownerDocument,
evt = doc.createEvent('MouseEvents');
evt.initMouseEvent('click', true, true, doc.defaultView, 1, 0, 0, 0, 0, false, false, false, false, 0, null);
this.dispatchEvent(evt);
} else {
this.click(); // IE Boss!
}
});
}
может быть полезно:
код, вызывающий триггер, должен идти после вызывается событие.
например, у меня есть код, который я хочу выполнить при изменении значения #expense_tickets, а также при перезагрузке страницы
$(function() {
$("#expense_tickets").change(function() {
// code that I want to be executed when #expense_tickets value is changed, and also, when page is reload
});
// now we trigger the change event
$("#expense_tickets").trigger("change");
})
в jQuery .trigger('click');
вызовет только событие для запуска этого события, оно также не вызовет действие браузера по умолчанию.
вы можете имитировать ту же функциональность со следующим JavaScript:
jQuery('#foo').on('click', function(){
var bar = jQuery('#bar');
var href = bar.attr('href');
if(bar.attr("target") === "_blank")
{
window.open(href);
}else{
window.location = href;
}
});
Я попробовал два лучших ответа, это не сработало для меня, пока я не удалил "display:none" из моих элементов ввода файла. Затем я вернулся к прежней теме .trigger () также работал в safari для windows.
поэтому заключение не используйте display: none; чтобы скрыть ввод файла, вы можете использовать opacity:0 вместо этого.
технически не ответ на это, но хорошее использование принятого ответа (https://stackoverflow.com/a/20928975/82028) для создания кнопок next и prev для вкладок в полях jQuery ACF:
$('.next').click(function () {
$('#primary li.active').next().find('.acf-tab-button')[0].click();
});
$('.prev').click(function () {
$('#primary li.active').prev().find('.acf-tab-button')[0].click();
});
вы не можете имитировать событие click с помощью javascript.
в jQuery .trigger()
функция запускает только событие с именем "click" на элементе, который вы можете захватить с помощью .on()
метод jQuery.