例如,如果我写这段代码:
$(document).ready(function(){
$("div#i").click(function(){
alert("ok");
});
});
并且加载时在页面中找不到带有i id的div元素,所以在用一些函数创建它之后;我点击它,什么都没发生,所以我怎么能刷新jquery中的就绪函数..
答案 0 :(得分:5)
$(document).delegate('div#i','click',function(){});
使用Delegate
<强> Reference 强>
<强> Delegate vs Live 强>
<强> Demo 强>
答案 1 :(得分:1)
使用.live()
:http://api.jquery.com/live/
答案 2 :(得分:1)
将(click)事件处理程序从(document).ready中取出,并将其放在您提到的创建ID的函数中。
function someFunction()
{
//creates the id, then
$("div#i").click(function(){
alert("ok");
});
}
编辑:
如果这只是许多潜在事件处理程序中的一个示例,那么将它们全部包装在一个函数中,比如bindEvents()
,并且每次页面被ID创建“弄脏”时都可以调用它。
但是其他评论者使用.live()的方法可能会更少维护,如果这是你的担忧,它就是“JQuery方式”。