2011-03-28 41 views
1

例如,如果我写这样的代码:刷新该文件准备的jQuery

$(document).ready(function(){ 

    $("div#i").click(function(){ 
     alert("ok"); 
     }); 
    }); 

,并与本人身份证的div元素不会在当加载页面发现的,所以以后我与一些函数来创建它;我点击它,没有发生,所以我怎么能刷新的jQuery就绪功能..

回答

5
$(document).delegate('div#i','click',function(){}); 

使用Delegate

Reference

Delegate vs Live

Demo

+0

不错,但如果元素是iframe而不是div .. – mkotwd 2011-03-28 17:57:29

+1

我推荐使用['.delegate'](http://stackoverflow.com/questions/4204316/jquery-live-vs-delegate/4204349 #4204349) – Raynos 2011-03-28 18:11:31

+0

@Raynos感谢您提供的信息,答案已更改,并链接到您与我分享的答案,以了解为什么您应该使用委托进行实时活动。 – Loktar 2011-03-28 18:19:59

1

接招click事件处理了(文件)。就绪,并把它放在你已经提到它创建ID的功能。

function someFunction() 
{ 
    //creates the id, then 
    $("div#i").click(function(){ 
     alert("ok"); 
     }); 

} 

编辑:

如果这是许多潜在的事件处理程序中的一个例子,然后将它们包装在一个单一的功能,比方说,bindEvents(),并且可以调用每一个页面被“污染”的时间通过创建ID。

但其他评论者使用.live()的方法可能不太适合维护,如果这是您的问题,它就是“JQuery方式”。

+1

但似乎我更喜欢.live解决方案:-) – LesterDove 2011-03-28 17:48:35

+0

但代码变得巨大而且并不真正干净.. – mkotwd 2011-03-28 17:58:23