将行追加到表后的 jquery 函数
jquery functions after append row to table
我需要一些帮助,所以我希望你能帮助我。我有一个表格,单击按钮后以这种方式添加行。
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'),以避免事件多次触发。
如果你想保持当前的语法,试试这个:
$('#pl_table').on('change', 'input:checkbox', function () {
if (this.checked) {
$(this).closest('tr').addClass('selected');
}
else {
$(this).closest('tr').removeClass('selected');
};
这样,您就不会在每个输入上添加事件,而只需将其添加到表上并在输入更改时触发它。对于动态生成的元素,我更喜欢这个。
试试这个:
var row = "<tr><td><input class='check_box' type='checkbox' onchange="change(this);"></input>some text<td></tr>";
$('#pl_table').append(row);
function change(element)
{
if(element.checked) {
element.closest('tr').addClass('selected');
}
else{
element.closest('tr').removeClass('selected');
}
}
我用起来并不好:
$(document).on('change','#elemnt',function(){
//do something here
});
因此,无需在每次添加新行时调用BindDynamicEvents();
。
从 jQuery 1.4 开始,.after()
支持传递一个返回要插入的元素的函数。请参阅此链接。
相关文章:
- 是否有一个JS/jQuery函数可以获取某个类的每个元素的ID
- 如何在JQuery函数中定义一个值,然后调用另一个函数并使用该值
- 如何从jquery函数返回变量
- 如何将具有文本类型值的var放入jQuery函数中
- Jquery函数在错误的时间提交
- 锚链接无法使用.slideUp jquery函数
- 重新分解jQuery函数
- 如何在视图模型contet更新更新上调用Jquery函数
- 如何向这个javascript/jquery函数添加参数
- 添加类来触发jquery函数
- 更改智能表中的页面将停止JQuery函数的工作
- 使用每500ms运行一次的jquery函数是个好主意吗
- jQuery函数不能只在一个页面上工作
- 如何将jquery函数链接到vanilla选择器
- 仅在小型设备上调用jQuery函数
- 如何将jquery函数仅应用于大屏幕
- 奇怪的jquery函数行为
- Backbone listenTo不将jquery函数作为处理程序进行激发
- 在jquery函数内部设置来自jquery函数的var;t运行
- 从Jquery函数中获取一个变量