Невозможно прочитать свойство 'столбец' из неопределенного - PullRequest
0 голосов
/ 07 февраля 2019
$('.user-data thead th').unbind().bind('keyup', function() {
    this.dataTable.column(2).search(this.value).draw(); });

Я хочу выполнить поиск по столбцу, но этот код дает мне ошибку столбца, как столбец не определен

Ответы [ 2 ]

0 голосов
/ 08 февраля 2019

Вы когда-нибудь проверяли этот пример?

Что касается вашего кода, я могу увидеть пару ошибок:

  • this внутриПрослушиватель событий соответствует элементу HTML (даже объекту jQuery), поэтому у него нет свойства dataTable, на которое вы ссылаетесь; атрибут
  • value также недоступен, поэтому ваш поиск, в основном,ища undefined, на самом деле, я мог бы предположить, что вы пытались сделать .val();
  • , так как вы используете .user-data в качестве родительского узла внутри вашего селектора, вы должны знать, что поиск будетДля каждой таблицы на одной и той же странице, имеющей один и тот же класс, что может показаться довольно неловким, я бы рекомендовал вместо этого использовать уникальный идентификатор;
  • еще одна причина, по которой он может не работать, заключается в том, что содержимое таблицы (включая thead) генерируются динамически, поэтому вы не можете сразу подключить к нему прослушиватель событий и должны использовать делегирование события ;

С учетом вышеизложенного, например, фрагмент кода, которыйЯ рекомендуюРед, выше, не будет работать для вас, по какой-то причине, я бы изменил ваш код на что-то вроде:

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

, что не обязательно решит проблему, так как я не вижу остальную часть контекста.Вы можете найти работающих DEMO здесь .

0 голосов
/ 07 февраля 2019

Похоже, что первый this не входит в объем, который вы думаете.Второй this находится в нужной области.

Назначьте this локальной переменной:

const that = this;

$('.user-data thead th').unbind().bind('keyup', function(){
    that.dataTable.column(2).search(this.value).draw(); 
});
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...