无法读取未定义的属性“列”

时间:2019-02-07 07:07:36

标签: jquery angular datatables

$('.user-data thead th').unbind().bind('keyup', function() {
    this.dataTable.column(2).search(this.value).draw(); });

我想按列搜索,但是这段代码给我列错误,例如未定义列

2 个答案:

答案 0 :(得分:0)

第一个this似乎不在您认为的范围内。第二个this在正确的范围内。

this分配给局部变量:

const that = this;

$('.user-data thead th').unbind().bind('keyup', function(){
    that.dataTable.column(2).search(this.value).draw(); 
});

答案 1 :(得分:0)

您是否通过任何方式签出了this示例?

关于您的代码,我可能会看到一些错误:

    事件监听器中的
  • this对应于HTML元素(甚至不是jQuery对象),因此它没有您所引用的属性dataTable
  • value属性也不可用,因此您的搜索基本上是在寻找undefined,实际上,我可能会假设您正在尝试做.val();
  • 由于您将.user-data用作选择器内的父节点,因此应注意,将在同一页面上具有相同类的每个表上执行搜索,这看起来很尴尬,我d建议改用唯一ID;
  • 它可能实际上不起作用的另一个原因是因为表内容(包括thead)是动态生成的,因此您不能立即将事件侦听器附加到它,而必须使用event delegation; li>

考虑到以上情况,如果我上面提到的示例代码段对您不起作用,由于某种原因,我会更改代码,例如:

$('#tableid thead th').unbind().bind('keyup', function() {
    dataTable.column(2).search($(this).val()).draw(); });

这不一定解决问题,因为我看不到上下文的其余部分。 您可能会找到有效的演示 over here