как инициировать Живой (), нажимают в jQuery

У меня есть интересная ситуация. Я должен инициировать живой щелчок, потому что простой щелчок не работает.

Это - то, что я имею:

$('.text').trigger('click');

но мне нужно что-то вроде этого:

$('.text').trigger(live('click' ...));

или что-то для решения этой проблемы.

Это - мой код:

$(".Sets a.largeImage").fancybox({

  'onComplete': function(){
    return errorimage(myurl);
  } 

});

function errorimage(url) {

  $("#fancybox-img").live('click', function(){
   $('.lightbox:first').trigger('click');
  });

  $('#fancybox-img').trigger('click');

}   

Идея состоит в том, что я хочу инициировать $('.lightbox:first').trigger('click');, но в живом режиме, потому что простой щелчок не работает!

Спасибо!!!!

13
задан Steeven 6 April 2013 в 19:14
поделиться

3 ответа

Полагаю, проблема, с которой вы столкнулись, заключается в том, что live() и delegate() привязывают обработчик событий не к самому элементу DOM / объекту jQuery, а к некоторому родительскому узлу. live(), например, привяжет обработчик к document.body, который проверяет event.target. Проще говоря, это использует пузырение событий, в этом и заключается идея живых событий.

Другими словами, используя живые события, можно было бы вызвать событие типа

$(document.body).trigger({ 
   type:   'click',
   target: $('.text')[0]
});

обновление

, но, к сожалению, это, похоже, не работает. Я пытался также установить currentTarget и relatedTarget. Куда .live() привязывает обработчик? кто-нибудь?

2
ответ дан 2 December 2019 в 01:09
поделиться

Лучшим решением было бы выделить обработчик кликов в отдельной функции.

Затем вы можете вызвать эту функцию как из обработчика щелчков в реальном времени, так и когда вы хотите вручную запустить щелчок.

10
ответ дан 2 December 2019 в 01:09
поделиться

Я полагаю, вы можете просто использовать свой первый пример, поскольку триггер используется только для активации связанного элемента, а не для его привязки.

Итак, когда вы делаете:

$('#someElement').live('click',function(){./*..*/});

это То же, что и

$('#someElement').click(function(){./*..*/}); 

, кроме первого, также проверяет наличие нового html при каждом запросе ajax и снова выполняет привязку.

так что просто сделайте:

$('div.class').trigger('click');

и он должен активировать живые элементы

-4
ответ дан 2 December 2019 в 01:09
поделиться
Другие вопросы по тегам:

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