У меня есть интересная ситуация. Я должен инициировать живой щелчок, потому что простой щелчок не работает.
Это - то, что я имею:
$('.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');
, но в живом режиме, потому что простой щелчок не работает!
Спасибо!!!!
Полагаю, проблема, с которой вы столкнулись, заключается в том, что live()
и delegate()
привязывают обработчик событий не к самому элементу DOM
/ объекту jQuery
, а к некоторому родительскому узлу
. live()
, например, привяжет обработчик к document.body
, который проверяет event.target
. Проще говоря, это использует пузырение событий
, в этом и заключается идея живых событий
.
Другими словами, используя живые события, можно было бы вызвать событие типа
$(document.body).trigger({
type: 'click',
target: $('.text')[0]
});
обновление
, но, к сожалению, это, похоже, не работает. Я пытался также установить currentTarget
и relatedTarget
. Куда .live()
привязывает обработчик? кто-нибудь?
Лучшим решением было бы выделить обработчик кликов в отдельной функции.
Затем вы можете вызвать эту функцию как из обработчика щелчков в реальном времени, так и когда вы хотите вручную запустить щелчок.
Я полагаю, вы можете просто использовать свой первый пример, поскольку триггер используется только для активации связанного элемента, а не для его привязки.
Итак, когда вы делаете:
$('#someElement').live('click',function(){./*..*/});
это То же, что и
$('#someElement').click(function(){./*..*/});
, кроме первого, также проверяет наличие нового html при каждом запросе ajax и снова выполняет привязку.
так что просто сделайте:
$('div.class').trigger('click');
и он должен активировать живые элементы