我使用AJAX調用加載了內容,並在父代中顯示了HTML(由div
s等組成)。無法控制使用.load動態添加的內容
現在我已經編寫了一系列.click
和.hover
函數,這些函數可以完美地處理所有事情,直到我的內容動態加載的位置,然後完全不工作在動態加載的內容上。
我已經通過了我的所有div
ID來確保他們是正確的,他們是。有沒有辦法獲得對AJAX加載材料的控制權?
我使用AJAX調用加載了內容,並在父代中顯示了HTML(由div
s等組成)。無法控制使用.load動態添加的內容
現在我已經編寫了一系列.click
和.hover
函數,這些函數可以完美地處理所有事情,直到我的內容動態加載的位置,然後完全不工作在動態加載的內容上。
我已經通過了我的所有div
ID來確保他們是正確的,他們是。有沒有辦法獲得對AJAX加載材料的控制權?
的問題是,你的代碼,在那個時候,沒有「未來」元素存在的元素只能運行。你有2個選擇:
1)加載你的ajax內容後,重新運行你的「onload」javascript代碼(它已經在文檔準備好了)。
2)使用.live()
代替.bind()
: 因此改變
$('#selector').bind('click', function(){..
要
$('#selector').live('click',function(){..
不同的是,live
使用選擇現在和未來相匹配的元素,與bind
使用的元素僅在調用時匹配選擇器。
希望這會有所幫助。歡呼
是的,這工作得很好,謝謝 – Mark
不客氣。 –
您應該重新綁定事件的內容加載後或使用
.delegate
(api)有自動連接到新加載的元素的事件。
類似:
$("ul#container").delegate("li", "hover", function(){
doStuff();
});
$("ul#container").delegate("li", "click", function(){
doOtherStuff();
});
變化
$('a#whatever').click(function(){....
要
$('a#whatever').live('click',function(){....
'live'不如'delegate',應該不建議:http://stackoverflow.com/questions/4579117/jquery生活與委託不同,活動與委託 – Variant
不一樣。他們每個人都有自己的最佳用法。 – AlienWebguy
我同意現場有它的用法。在這種情況下,它不是。 – Variant
你需要指定.click或.hover創建元素後創建 – Ibu