我正在通过Ajax加载一些内容。加载完成后,我想在锚元素上触发click
事件。但这似乎不起作用。如何一起使用trigger
和live
?
答案 0 :(得分:7)
你可以像这样触发它:
<div id="test">CLICK</div>
$('#test').live('click', function() {
window.alert("works");
});
$(document).trigger({
type: 'click',
target: $('#test')[0]
});
基本上,实时处理程序绑定到文档元素,因此您需要发送事件
答案 1 :(得分:4)
BIND LIVE EVENTS:
$('PARENT_OF_SOME_ELEMENT').on('EVENT_NAME', 'SOME_ELEMENT', function() {
// SOME_ELEMENT will be the target
});
或使用delegate();
$('PARENT_OF_SOME_ELEMENT').delegate('SOME_ELEMENT', 'EVENT_NAME', function() {
// SOME_ELEMENT will be the target
});
TO TRIGGER:
$('SOME_ELEMENT').EVENT_NAME(); //eg. $('SOME_ELEMENT').click();
或
$('SOME_ELEMENT').trigger('EVENT_NAME'); //eg. $('SOME_ELEMENT').trigger('click');
在事件中触发事件
$('AN_EVENT_HOLDER').EVENT_NAME(function() {
$('SOME_ELEMENT').EVENT_NAME(); // or $('SOME_ELEMENT').trigger('EVENT_NAME'); as illustrated above
});
例如
$('.i_have_an_event').on('click', function() {
$('SOME_ELEMENT').click();
});
注意
此处SOME_ELEMENT
和PARENT_OF_SOME_ELEMENT
是有效选择器。
请勿使用.live()
,因为它已被弃用。
答案 2 :(得分:3)
至于.live()
方法已从jQ 1.6.8弃用,请使用.on()
方法:
$(document).on('click','a.myAnchor', function(){
// do your stuff
});
$('#yourElement').on('click', function(){
$('a.myAnchor').click(); // trigger the dynamically created 'anchor' stuff
});
答案 3 :(得分:1)
$(function() {
$('<parent element selector>').on('click', '<target element selector>', function () {
// do your stuff
$('<anchor selector>').trigger('click');
});
});
答案 4 :(得分:0)
使用此:
$('a#achTest').live('click', function(){
// some code
});
$('a#achTest').trigger('click');
答案 5 :(得分:0)
这是另一种适合我的方式。
$('#test').live('click', function() {
alert("It works!");
});
$('#test')[0].click();
这里的重要部分是:
$('#test')[0].click();