2011-03-28 40 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