2011-07-03 26 views
0

我使用AJAX調用加載了內容,並在父代中顯示了HTML(由div s等組成)。無法控制使用.load動態添加的內容

現在我已經編寫了一系列.click.hover函數,這些函數可以完美地處理所有事情,直到我的內容動態加載的位置,然後完全不工作在動態加載的內容上。

我已經通過了我的所有div ID來確保他們是正確的,他們是。有沒有辦法獲得對AJAX加載材料的控制權?

+0

你需要指定.click或.hover創建元素後創建 – Ibu

回答

0

的問題是,你的代碼,在那個時候,沒有「未來」元素存在的元素只能運行。你有2個選擇:

1)加載你的ajax內容後,重新運行你的「onload」javascript代碼(它已經在文檔準備好了)。

2)使用.live()代替.bind(): 因此改變

$('#selector').bind('click', function(){.. 

$('#selector').live('click',function(){.. 

不同的是,live使用選擇現在和未來相匹配的元素,與bind使用的元素僅在調用時匹配選擇器。

希望這會有所幫助。歡呼

+0

是的,這工作得很好,謝謝 – Mark

+0

不客氣。 –

-1

您應該重新綁定事件的內容加載後或使用

.delegateapi)有自動連接到新加載的元素的事件。

類似:

$("ul#container").delegate("li", "hover", function(){ 
    doStuff(); 
}); 
$("ul#container").delegate("li", "click", function(){ 
    doOtherStuff(); 
}); 
0

你的事件處理程序綁定到存在於他們所設置的時間元素。

將處理程序重新附加到新的動態創建的材料,或者使用livedelegate;這些「將事件處理程序附加到與當前選擇器匹配的所有元素,現在和未來」。

-1

變化

$('a#whatever').click(function(){.... 

$('a#whatever').live('click',function(){.... 
+0

'live'不如'delegate',應該不建議:http://stackoverflow.com/questions/4579117/jquery生活與委託不同,活動與委託 – Variant

+0

不一樣。他們每個人都有自己的最佳用法。 – AlienWebguy

+0

我同意現場有它的用法。在這種情況下,它不是。 – Variant