2016-10-06 4 views
0

я нашел этот jsfiddle: http://jsfiddle.net/FranWahl/rFGWZ/JQuery поиска несколько столбцов в таблице

$("#search").on("keyup", function() { 
var value = $(this).val(); 

$("table tr").each(function(index) { 
    if (index !== 0) { 

     $row = $(this); 

     var id = $row.find("td:first").text(); 

     if (id.indexOf(value) !== 0) { 
      $row.hide(); 
     } 
     else { 
      $row.show(); 
     } 
    } 
}); 
}); 

где JQuery используется для фильтрации и поиска в первом столбце таблицы. Я пытаюсь изменить это, поэтому он ищет ВСЕ столбцы, независимо от того, сколько столбцов имеет таблица.

Можно ли это сделать или мне нужно знать количество колонок заранее?

P.S. - Я пытаюсь избежать таблиц данных, так как мне не нужны все дополнительные функции, которые прилагаются к нему.

+0

вы можете использовать таблицу данных вместо того, чтобы создать новый код ... – Rohit

+0

Я пытаюсь избегать использования таблиц данных. Мне не нужны все дополнительные функции, которые прилагаются к нему. – aguerra

ответ

1

Оказывается, это не так сложно. Вот что я изменил:

$("#search").on("keyup", function() { 
var value = $(this).val(); 
$("table tr").each(function(index) { 
    if (index !== 0) { 
     $row = $(this); 

     $row.find('td').each (function() { 
      var id = $(this).text(); 
      if (id.indexOf(value) !== 0) { 
       $row.hide(); 
      } 
      else { 
       $row.show(); 
       return false; 
      } 
     }); 

    } 
}); 
}); 
1

, если вы хотите проверить всю строку на каждой колонке вам не нужно использовать .find («тд: первый») просто использовать простой .text(), и я думаю, indexOf() возвращает -1, если не найден.

$("#search").on("keyup", function() { 
    var value = $(this).val(); 

    $("table tr").each(function(index) { 
     if (index !== 0) { 

      $row = $(this); 

      var id = $row.text(); 

      if (id.indexOf(value) !== -1) { 
       $row.show();  
      } 
      else { 
       $row.hide();  
      } 
     } 
    }); 
}); 
+0

Не могли ли это привести к ложным срабатываниям? Пример использования значения 446 isnt td, который соответствует 446 4, - это последняя цифра уникального идентификатора, а 46 - первые две цифры на случайном id http://jsfiddle.net/SeanWessell/1s8nhg9h/ –

+0

Вы правы, я пропустил что! Думаю, я придерживаюсь своего решения. – aguerra

+0

хорошо, что вы правы. Я не думал об этом, так или иначе, как об использовании .html() вместо .text(), хотя он будет содержать внутри идентификатора var id, он будет действовать как разделитель для каждого столбца. –

0

Используйте Фильтр, чтобы найти спички td. Затем проверьте длину, чтобы убедиться, что она существует.

http://api.jquery.com/filter/

$("#search").on("keyup", function() { 
    var value = $(this).val(); 
    $("table tr").each(function(index) { 
     if (index !== 0) { 
      var $row = $(this); 
      //Filter down tds which inner text matches indexOf check 
      var matches = $row.find('td').filter(function(ix,item){ 
       return $(item).text().indexOf(value) > -1; 
      }); 

         //if matches exist then show else hide 
      if (matches.length != 0) { 
       $row.show();  
      } 
      else { 
       $row.hide();  
      } 
     } 
    }); 
}); 

http://jsfiddle.net/SeanWessell/wa6q6Lnr/

Смежные вопросы