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

时间:2012-04-20 20:11:46

标签: javascript events triggers jquery

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

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

为什么呢?我做错了吗?

如果我使用例如预览页面FireBug,元素的#id与它应该是完全一样的,但即使是这样的函数也不行:

$('#clickme').click(function() {
    alert('hello');
});

如果元素放在index.php中并且未加载.load(),则相同的函数可以工作。任何想法??

非常感谢你!

2 个答案:

答案 0 :(得分:3)

使用click将在元素被调用时创建一个事件监听器。如果在调用click时该元素不存在,则不会创建侦听器。您需要使用on(或旧版本的jquery中的delegate)来使用事件委派。

查看on documentation并阅读有关授权的内容。你需要这样的东西:

$("<selector of static ancestor>").on("click", "#clickme" , function(){})

答案 1 :(得分:2)

click事件绑定器不绑定到执行后创建的任何元素。您可以在click方法后立即添加.load()侦听器,也可以使用livedelegate之类的内容绑定到DOM中的元素模式。