$('.user-data thead th').unbind().bind('keyup', function() {
this.dataTable.column(2).search(this.value).draw(); });
我想按列搜索,但是这段代码给我列错误,例如未定义列
答案 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; 考虑到以上情况,如果我上面提到的示例代码段对您不起作用,由于某种原因,我会更改代码,例如:
$('#tableid thead th').unbind().bind('keyup', function() {
dataTable.column(2).search($(this).val()).draw(); });
这不一定解决问题,因为我看不到上下文的其余部分。 您可能会找到有效的演示 over here。