当我替换一个元素以将DOM从DOM中取出时,请将其重新插入,注册的事件不会触发。我需要事件保持原样。
这是我的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); });
在演示中,单击元素时,将使用replaceWith替换为另一个元素。当您单击新元素时,将使用replaceWith替换为原始元素。但是,点击处理程序不再工作(我认为应该)。
解决方法
因为当您替换原始元素时,绑定到它的事件将被删除。调用replace.replaceWith(原始)后,您需要将click事件处理程序重新附加到原始文件:
$(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); });