2011-12-18 64 views
0

我正在使用Jquery動態加載我的網站頁面。基本上隱藏和顯示div取決於您點擊哪個主菜單選項。jQuery不執行綁定到動態創建的元素的處理程序

問題出現在每個頁面上的子菜單;當頁面改變時菜單改變。我清空<ul>並在每次換頁時追加新的<li>

我有jQuery的懸停和點擊與子菜單<li>去功能,他們只工作,如果頁面刷新。功能似乎停止工作,因爲我刪除了<li>,然後添加新的。

我不明白爲什麼這些功能不只是去新的<li>

這是爲什麼?

+0

請在此處張貼您的相關代碼。 – talnicolas 2011-12-18 08:14:04

+0

最有可能的一些錯誤的代碼...好像? – 2011-12-18 08:19:18

回答

0

從我的理解你的問題可能不使用.live()方法..見http://api.jquery.com/live/。當添加新的li時,DOM已經被加載,所以你的新的li標籤沒有資格附加.hover()或者你想要的任何事件。這可能不是你正在尋找..但必須足夠接近

1

我有同樣的問題。 jQuery只能將事件綁定到jQuery腳本加載(頁面加載)時存在的元素。爲了讓事件影響您新創建的元素,您需要將.live添加到您的代碼中。 像這樣:

$(".menu").live("hover", function(){ 
    // your action here 
}); 

在此的更多信息,http://api.jquery.com/live/ 找到我相信有像.bind做同樣的或類似的事情,一些額外的命令,等等,但我一直使用.live 我希望有所幫助!

+0

謝謝,這工作完美 – 2011-12-18 08:39:49

+0

真的很高興我可以幫助。我是StackOverflow的全新人物,並且正在嘗試建立一些聲望。你能接受答案嗎(或者是否有效)? – 2011-12-18 08:58:53

1

從jQuery 1.7開始,新的非棄用方法是使用.on()處理程序。如果您使用的是此版本,而不是.live(),請使用:

$('#menu').on('hover', 'li', function() { ... }); 
相關問題