我有index.php并使用jQuery .load()从load.php加载内容。
当我在index.php中的元素上触发事件时,事件将触发。在相同的元素上,当将.load()加载到index.php中时,事件不会触发!?
为什么呢?我做错了吗?
如果我使用例如预览页面FireBug,元素的#id与它应该是完全一样的,但即使是这样的函数也不行:
$('#clickme').click(function() {
alert('hello');
});
如果元素放在index.php中并且未加载.load(),则相同的函数可以工作。任何想法??
非常感谢你!
答案 0 :(得分:3)
使用click
将在元素被调用时创建一个事件监听器。如果在调用click
时该元素不存在,则不会创建侦听器。您需要使用on
(或旧版本的jquery中的delegate
)来使用事件委派。
查看on documentation并阅读有关授权的内容。你需要这样的东西:
$("<selector of static ancestor>").on("click", "#clickme" , function(){})
答案 1 :(得分:2)
click
事件绑定器不绑定到执行后创建的任何元素。您可以在click
方法后立即添加.load()
侦听器,也可以使用live
或delegate
之类的内容绑定到DOM中的元素模式。