str*_*ger 19 jquery events dom
当我将replaceWith一个元素带出DOM时,然后replaceWith它返回,注册到它的事件不会触发.我需要保持完整的事件.
这是我的Javascript:
var replacement = $(document.createElement('span'));
var original = $(this).replaceWith(replacement);
replacement
.css('background-color', 'green')
.text('replacement for ' + $(this).text())
.click(function() {
replacement.replaceWith(original);
});
Run Code Online (Sandbox Code Playgroud)
在演示中,当您单击一个元素时,它将替换为另一个元素replaceWith.单击新元素时,将使用原始元素替换该元素replaceWith.但是,点击处理程序不再起作用(我认为它应该在哪里).
Sho*_*og9 11
因为当您替换原始元素时,将删除绑定到它的事件.在调用之后,您需要重新附加click事件处理程序:originalreplacement.replaceWith(original)
$(function()
{
function replace()
{
var replacement = $(document.createElement('span'));
var original = $(this).replaceWith(replacement);
replacement
.css('background-color', 'green')
.text('replacement for ' + $(this).text())
.click(function()
{
replacement.replaceWith(original);
original.click(replace);
});
}
$('.x').click(replace);
});
Run Code Online (Sandbox Code Playgroud)