javascript - 将行追加到表后的 jquery 函数

标签 javascript jquery html

我需要一些帮助,所以我希望你能帮助我。我有一个表格,单击按钮后会以这种方式添加行。

var row = "<tr><td><input class='check_box' type='checkbox'></input>some text<td></tr>";

$('#pl_table').append(row);

我还有 jquery 函数,可以在选中复选框时将类添加到行中。所以这个类有一个背景颜色的 .css 定义。

$('input:checkbox').on('change', function() { 
    if(this.checked) {
        $(this).closest('tr').addClass('selected');
    }
    else{
        $(this).closest('tr').removeClass('selected');
    }
}

问题是添加的行不会调用 on('change') 事件。加载页面时,它会针对已经存在的行进行调用。

为什么会发生这种情况?我的代码有什么问题?感谢您的帮助。

最佳答案

我也遇到过同样的情况,下面给出了解决此问题的步骤,

a.将 $('input:checkbox').on('change' 放入方法中,如下所示,

function BindDynamicEvents()
{
   $('input:checkbox').off('change').on('change', function() { 
    if(this.checked) {
        $(this).closest('tr').addClass('selected');
    }
    else{
        $(this).closest('tr').removeClass('selected');
    }
}
}

b.在 $('#pl_table').append(row) 之后调用此方法,如下所示,

$('#pl_table').append(row);
BindDynamicEvents();

这样就可以解决问题了。

注意:请包含 .off('change') 如代码中所示,以避免事件被多次触发。

关于javascript - 将行追加到表后的 jquery 函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28970323/

相关文章:

javascript - 如何为只读 SlickGrid 单元格提供与可编辑单元格不同的背景?

html - 悬停时展开顶部栏以显示导航链接

javascript - 将文本区域中的值连接到另一个位置

javascript - 使用后退按钮 AJAX 结果丢失

javascript - NuxtJS 和 Firebase Web SDK Beta v9 : How to add realtime listener to firestore?

jquery - facebook 风格的导航栏

jquery - 如何在客户端验证 google recaptcha?

jquery - 垂直布局中间的DIV,水平布局左边的div

html - CSS浏览器和加载="lazy"

javascript - 在 JavaScript 中使用 Click addEventListener 交换 CSS