我的html如下
<div id="parent_div">
<div class="child_div">
<p>clicked button 1</p>
<button id="button1">button1</button>
</div>
<div class="child_div">
<p>clicked button 2</p>
<button id="button2">button2</button>
</div>
</div>
<button id="remover">remove</button>
<script type="text/javascript">
$('#button1').click(function(event) {
$(this).prev().css('color','red');
});
$('#button2').click(function(event) {
$(this).prev().css('color','yellow');
});
var new_html = '<div class="child_div">\
<p>new button 1</p>\
<button id="button1">button1</button>\
</div>\
<div class="child_div">\
<p>new button 2</p>\
<button id="button2">button2</button>\
</div>\
<div class="child_div">\
<p>new button 3</p>\
<button id="button3">button3</button>\
</div>'
$('#remover').click(function(event) {
$('#parent_div').children().detach();
$('#parent_div').append(new_html);
});
</script>
在上面的代码中,当单击删除器按钮时,我希望 parent_div 变空,但我需要保留放置在其上的事件处理程序。因为后来,我添加了不同的 html,但具有与之前放置事件的相同的 id。当我尝试使用上面的代码执行此操作时,无论使用 detach() 、remove() 或 emtpy() 方法,我的事件都会被隐藏。在新元素上,我的点击事件不起作用。请帮我解决这个问题
最佳答案
检查此工作代码。
$().ready(function(){
$('#parent_div').on('click', '#button1', function (event) {
$(this).prev().css('color', 'red');
});
$('#parent_div').on('click', '#button2', function (event) {
$(this).prev().css('color', 'yellow');
});
$('#parent_div').on('click', '#button3', function (event) {
$(this).prev().css('color', 'green');
});
var new_html = '<div class="child_div">\
<p>new button 1</p>\
<button id="button1">button1</button>\
</div>\
<div class="child_div">\
<p>new button 2</p>\
<button id="button2">button2</button>\
</div>\
<div class="child_div">\
<p>new button 3</p>\
<button id="button3">button3</button>\
</div>'
$('#remover').click(function (event) {
$('#parent_div').children().detach();
$('#parent_div').append(new_html);
});
});
<script src="https://code.jquery.com/jquery-1.12.4.js"></script>
<div id="parent_div">
<div class="child_div">
<p>clicked button 1</p>
<button id="button1">button1</button>
</div>
<div class="child_div">
<p>clicked button 2</p>
<button id="button2">button2</button>
</div>
</div>
<button id="remover">remove</button>
关于javascript - 如何在使用 jquery 中的类删除元素时继承事件处理程序?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43352392/