Javascript jQuery:触发器不会在加载了.load()的元素上触发

Javascript jQuery:触发器不会在加载了.load()的元素上触发,javascript,events,triggers,jquery,Javascript,Events,Triggers,Jquery,我有index.php,并使用jQuery.load()从load.php加载内容 当我在index.php中的元素上触发事件时,该事件将激发。在相同的元素上,当使用.load()加载到index.php中时,不会触发事件 为什么??我做错什么了吗 如果我使用例如FireBug预览页面,元素的#id与它应该的完全相同,但像这样的函数都不起作用: $('#clickme').click(function() { alert('hello'); }); 如果元素放在index.php中,而

我有index.php,并使用jQuery.load()从load.php加载内容

当我在index.php中的元素上触发事件时,该事件将激发。在相同的元素上,当使用.load()加载到index.php中时,不会触发事件

为什么??我做错什么了吗

如果我使用例如FireBug预览页面,元素的#id与它应该的完全相同,但像这样的函数都不起作用:

$('#clickme').click(function() {
    alert('hello');
});
如果元素放在index.php中,而不是用.load()加载,则相同的函数也可以工作。有什么想法吗


提前非常感谢

使用
单击
将在调用元素时在元素上创建事件侦听器。如果元素在调用
单击时不存在,则不会创建侦听器。您需要在
上使用
来使用事件委派(或者在较旧版本的jquery中使用
委派

请查看并阅读有关委派的信息。您将需要以下内容:

$("<selector of static ancestor>").on("click", "#clickme" , function(){})
$(“”)。在(“单击”,“单击我”,函数(){})上

单击
事件绑定器不会绑定到执行后创建的任何元素。您可以在
.load()
方法之后立即添加
单击
侦听器,或者可以使用
live
delegate
之类的方法绑定到DOM中的元素模式。

是否将函数包装为document ready?我不确定,但我认为当加载ajax时,在这种情况下不会触发事件。。。有人能证实这一点吗?这是否意味着,如果index.php中已经存在相同的元素(例如#clickme),但在.load()之后,它将被另一个#clickme替换,这将起作用?嗯。。。我认为如果您销毁了元素,然后重新创建它,它将销毁事件侦听器,但可能不会重新创建它;我不确定,但是使用
live()
而不是
click()
可以很容易地完全避免这个问题。哦,好的。。非常感谢您的快速回答!:)我在jquery端尝试了.live()中的示例,效果很好:$(“a.offsite”).live(“单击”,function(){alert(“再见!”;});所以,再次感谢你!:)在当前版本的
jquery
中,不要使用
live
delegate
,它们已被
on
替换。您应该使用
on()
而不是
live()
:对不起,如果我现在不明白。。。在您的示例中,James是什么?它是
#clickme
的祖先元素的选择器,该元素不是动态加载的。有负载的某个元件。如果没有其他内容,则可以是
文档
,但最好是更具体的内容。