2017-10-06 42 views
0

即時嘗試替換各種元素與jQuery的.each循環內的另一個,並將他們點擊事件給他們的子節點,但它不工作,這是我的代碼。Jquery replaceWith()內部循環與點擊事件

var replacer = function() { 
    var elementbody = "<div class='Container'><div class='Button'></div></div>"; 
    $('.myclass').each(function (index, element) { 
    $(element).replaceWith(elementBody); 
    $(element).find('.Button').click(function() { 
    //------------------To do on click event------------------// 
}); 
}; 
+2

什麼是$('。')'應該匹配? ''。後面必須跟一個類名。 – Barmar

回答

0

您使用

$(element).replaceWith(...); 

element後仍然指向舊的元素,而不是已經取代了它的元素。因此$(element).find('.Button')找不到您剛添加的按鈕。

而不是添加處理程序給您添加,使用委派到一個處理程序綁定只有一次,在Event binding on dynamically created elements?

$("someSelector").on("click", ".Button", function() { 
    ... 
}); 
0

解釋您可以使用委託作爲Barmar建議,或者你可以提供自己與每一個元素一個新的jQuery對象運行replaceWith

這樣的事情,也許在這之前引用您的新內容:

new_element = $('<div><button>Hello World</button></div'); 
$(element).replaceWith(new_element); 
new_element.find('button').on('click', function(e) { 
    console.log(e); 
}); 
+0

看起來不錯,我會試試這個。謝謝。 –