将变量作为参数传递给jQuery匿名函数

时间:2020-08-03 09:14:31

标签: jquery

我想将函数中包含的变量传递给它的子函数,但是它不起作用。它的值是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();
  });
});

1 个答案:

答案 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属性。