javascript - 如何在使用 jquery 中的类删除元素时继承事件处理程序?

标签 javascript jquery html

我的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/

相关文章:

javascript - 使用 Bootstrap 带有工具提示的东西

javascript - 在我们的表单中使用 javascript 的优缺点是什么?

jquery从类中删除所有类

javascript - 如何使用 JQuery 检索对表示其容器对象的变量内的 div 的引用?

javascript - 当浏览器已经处于全屏模式时,Chrome 在按下 F11 键时吃掉 javascript keydown 事件处理程序

javascript - 输入键上的 HTML textarea 换行符不起作用

Android 浏览器文本区域到处滚动,无法使用

javascript - 拼接未从数组中删除元素

Javascript:在插入 Google 表格之前按月而不是按天对 csv 数据进行分组

javascript - 使用 jquery 动态创建下拉菜单不起作用