2013-05-15 44 views
-2

我有一個主包裝的HTML塊,其中包含所有需要的jQuery功能。根據用戶點擊的內容,ajax調用會調用一些調用,並用返回的html替換內部div。新地點HTML中的按鈕不會註冊包裝器html中的.click函數。點擊它們什麼都不做。通過jQuery('divname')。html添加Html將無法與.click功能

檢查源代碼,jquery函數仍然存在,所以它們不會被刪除或替換。

部分代碼:

下面是我正在使用的jquery函數。它檢查點擊按鈕。如果是這樣,它會進行調用,然後用返回的html替換內容div。這個新的html將替換包含前一個按鈕的html,但它將包含它自己的具有相同ID的按鈕。這個新按鈕沒有註冊它與jquery功能的點擊。

jQuery("#newhtml").click(function() { 
    var ajaxurl = "urltogetnewhtml"; 
    new Ajax.Request(ajaxurl, { 
     method: 'post', 
     onComplete: function(transport) { 
      jQuery('#content').html(transport.responseText); 
     } 
    }); 
}); 

換句話說,它是第一次,但不是再次。點擊「New Html」按鈕,用新的html替換內容塊,包括一個名爲「New Html」的新按鈕。即使jquery代碼仍然存在,這個新按鈕不起作用。

+2

我很驚訝,人們提出問題而不提供代碼示例。只有當我們看到上下文時,我們才能真正提供幫助,請提供小提琴 – Timidfriendly

+2

您的代碼。告訴我們你的代碼。我吩咐你!嘿鞋店,有涼鞋嗎?涼鞋有靈魂嗎? (谷歌撒旦鞋店,如果你沒有得到參考) –

回答

1

你什麼單擊綁定是什麼樣子?如果您要動態添加元素,則應使用委派的事件。

例如:

$('#mybutton').on('click', function() { ... }); 

不會,如果你以.html創建#mybutton工作()。相反,使用:

$('#static_container').on('click', '#mybutton', function() { ... }); 
0

處理程序需要重新初始化新元素。使用jQuery .on()參考不贊成使用的jQuery .live()方法,該方法將爲當前匹配選擇器的元素以及與選擇器匹配的所有未來元素設置事件處理程序。或者你可以簡單地重新啓用你的愛人,但是你現在正在這樣做。

0

您需要使用jQuery的「on」函數來綁定點擊。 http://api.jquery.com/on/

例如$(「div.innerHTML」)上的「在」檢查(「點擊」,函數(){})

一個特定的元素存在在頁面上時,在事件發生。

0

因爲你不得不回憶click()代碼註冊它與新的項目,它不會奇蹟般地拿起它們。

更好的解決方案是使用on()

$("#wrapperId").on("click, ".childButton", function() { alert("foo"); }); 
1

由於HTML是動態添加,該功能。點擊將無法正常工作。添加HTML之後,您需要再次調用定義點擊的函數。您可以使用

$('#container').html(data); 

$('#container').on('click', '.thumbnail', function(event){ 
// do stuff 
}); 
1

點擊功能在這裏不起作用。使用jQuery.on()函數綁定頁面加載後添加的元素上的事件。 您可以使用此功能綁定任何事件。有關更多詳細信息,請訪問:http://api.jquery.com/on/

而Click事件綁定在頁面加載時加載的元素上。

您可以使用:

$("#dataTable tbody tr").on("click", function(event){ 
    alert($(this).text()); 
}); 

$("#dataTable tbody").on("click", "tr", function(event){ 
    alert($(this).text()); 
});