2011-05-11 38 views
0

我的頁面分爲vertically兩部分。 Left part就像一個菜單部分。點擊 任何菜單都會在頁面的right part中顯示與該菜單相關的正確數據。我 使用ajax call這樣做,唯一的div on the right part得到刷新。我使用jquery點擊事件的.. 說:爲什麼有時候jquery點擊事件失敗?

$("#left_part").click(function() { // ajax call here }); 

現在我對right part一些jquery action。 (說明隱藏一些也適用於click event.的div) 但是當new div reloads在右邊部分那些click event on the right part不起作用。 但是,當我bind the click event它的作品。

說:

$("#some_right_part").click(function() {/ some hide show here)}; Not working 
$("#some_right_part").bind('click', function(event){ // some hide show here)}; works fine 

重要:當我在fresh page(沒有AJAX調用尚未使右邊部分)$("#some_right_part").click(function() {/ some hide show here)}; works fine.

但我知道的是:$().click(function)電話$().bind('click',function)

那麼,背後的原因是什麼?或什麼是當你在頁面加載時,單擊事件被綁定到所有匹配的元素通過$().click分配一個click事件來解決這樣的問題

感謝

+0

這應該不會像您所描述的那樣失敗,它可能是別的。如果你使用'click'發佈你的整個代碼塊失敗,這將是有幫助的。 – hunter 2011-05-11 13:39:49

回答

3

的完美方式。但是,當您執行ajax調用並接收新標記時,新元素不會與單擊事件綁定,因爲當您第一次調用$().click時,它們不存在。

有一種方法可以將點擊事件綁定到所有可能創建的元素和所有將來的元素。您必須使用live這樣的方法:

$('#elements').live('click', function() { 
    // do logic 
}); 
+0

代表們是否做同樣的事情。 – Tauquir 2011-05-11 13:43:54

+0

是的,當然可以,兩者都可以解決您的問題 – jcvandan 2011-05-11 13:46:08

相關問題