Передать переменную в качестве параметра анонимной функции jQuery - PullRequest
1 голос
/ 03 августа 2020

Я хочу передать переменную, содержащуюся в функции, в ее подфункцию, но она не работает. В нем указано значение 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 Ответ

1 голос
/ 03 августа 2020

Вы не можете передавать параметры анонимным функциям jQuery. Проблема в вашем logi c заключается в том, что вы изменяете область действия 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() для чтения атрибут data из вашего HTML.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...