我想将函数中包含的变量传递给它的子函数,但是它不起作用。它的值是undefined
。
$('.search-input-text').keyup(function(e) {
e.preventDefault();
var i = $(this).attr('data-column');
var v = $(this).val();
$('#commandHistory').delay(200).queue(function(v, i) {
alert(v);
commandHistoryTable.columns(i).search(v).draw();
});
});
答案 0 :(得分:1)
您不能将参数传递给jQuery的匿名函数。逻辑上的问题是因为您将v
处理函数中的queue
的范围更改为参数,而不是外部范围中的v
的值。
要解决此问题,您只需将函数的v
参数重命名为其他参数,然后使用在父作用域中定义的v
:
$('.search-input-text').keyup(function(e) {
e.preventDefault();
let i = $(this).data('column');
let v = $(this).val();
$('#commandHistory').delay(200).queue(function(_, i) {
console.log(v);
commandHistoryTable.columns(i).search(v).draw();
});
});
还要注意,在data()
上使用attr()
来从HTML中读取data
属性。