2017-10-06 35 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

看起来不错,我会试试这个。谢谢。 –