Триггерный клик не работает должным образом [дублировать]

Я хочу, чтобы кто-то поделился этим сайтом со мной давно http://cors.io/ , он бы сэкономил массу времени по сравнению со строительством и полагался на мой собственный прокси. Однако, когда вы переходите к производству, ваш собственный прокси-сервер является лучшим выбором, поскольку вы все еще контролируете все аспекты ваших данных.

Все, что вам нужно:

https://cors.io/?http://HTTP_YOUR_LINK_HERE

109
задан Pranav C Balan 5 January 2014 в 04:50
поделиться

11 ответов

Вы должны использовать jQuery('#bar')[0].click(); , чтобы имитировать щелчок мышью на фактическом элементе DOM (а не на объекте jQuery), вместо использования метода jQuery .trigger().

Примечание. Уровень DOM Level 2 .click() не работает на некоторых элементах в Safari . Вам понадобится использовать обходной путь.

http://api.jquery.com/click/

222
ответ дан Community 1 September 2018 в 03:11
поделиться
jQuery('#foo').on('click', function(){
    window.open(jQuery('#bar').attr('href'), '_blank');
});
0
ответ дан 2pha 1 September 2018 в 03:11
поделиться

Функция jQuery's .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;
    }
});
4
ответ дан Alexander O'Mara 1 September 2018 в 03:11
поделиться

Может быть полезно:

Код, вызывающий триггер, должен идти после вызова события.

Например, у меня есть код, который я хочу выполнить, когда # значение cost_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");

})
13
ответ дан davewasthere 1 September 2018 в 03:11
поделиться

Попробуйте это для меня:

$('#bar').mousedown();
2
ответ дан Henry 1 September 2018 в 03:11
поделиться

Я пробовал два первых ответа, это не сработало для меня, пока я не удалил «display: none» из моих элементов ввода файла. Затем я вернулся к .trigger (), он также работал в Safari для окон.

Итак, вывод, Не используйте display: none; чтобы скрыть ввод файла, вы можете использовать opacity: 0. Вместо этого.

0
ответ дан Himanshu Saini 1 September 2018 в 03:11
поделиться

Вам просто нужно поместить небольшое событие таймаута, прежде чем делать .click() следующим образом:

setTimeout(function(){ $('#btn').click()}, 100);
15
ответ дан noufalcep 1 September 2018 в 03:11
поделиться

Это поведение JQuery. Я не уверен, почему он работает таким образом, он только запускает функцию onClick в ссылке.

Попробуйте:

jQuery(document).ready(function() {
    jQuery('#foo').on('click', function() {
        jQuery('#bar')[0].click();
    });
});
27
ответ дан Pranav C Balan 1 September 2018 в 03:11
поделиться

См. мою демонстрацию: 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!
        }
    });
}
18
ответ дан Reza Mamun 1 September 2018 в 03:11
поделиться

Технически это не ответ на это, но хорошее использование принятого ответа ( 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();
});
0
ответ дан Tisch 1 September 2018 в 03:11
поделиться

Вы не можете имитировать событие click с javascript. Функция jQuery .trigger() запускает событие с именем «click» на элементе, которое вы можете захватить с помощью метода .on() jQuery.

-2
ответ дан whitep4nther 1 September 2018 в 03:11
поделиться
Другие вопросы по тегам:

Похожие вопросы: