3

SO hereの例から基本的なテーブルを設定し、列のタイトルを追加しました。

列のタイトルを非表示にしないようにテーブル フィルターを修正する方法を提案できますか? これが私がテストしているjsfiddleコードです。

Javascript

var $rows = $('#table tr');
$('#search').keyup(function() {

var val = '^(?=.*\\b' + $.trim($(this).val()).split(/\s+/).join('\\b)(?=.*\\b') + ').*$',
    reg = RegExp(val, 'i'),
    text;

$rows.show().filter(function() {
    text = $(this).text().replace(/\s+/g, ' ');
    return !reg.test(text);
}).hide();
});

検索例: 検索に「apple」と入力すると、タイトル 1 とタイトル 2 が非表示になります。

4

2 に答える 2

4

私の推奨事項: クラスをヘッダーに追加し、それをフィルター結果から除外します。

http://jsfiddle.net/7BUmG/1161/

<input type="text" id="search" placeholder="Type to search">
<table id="table">
     <tr class="header">
      <th>Title 1</th>
      <th>Title 2</th>
    </tr>    
    <tr>
      <td>Apple</td>
      <td>Green</td>
   </tr>
   <tr>
      <td>Grapes</td>
      <td>Green</td>
   </tr>
   <tr>
      <td>Orange</td>
      <td>Orange</td>
   </tr>
</table>

    var $rows = $('#table tr[class!="header"]');
    $('#search').keyup(function() {

        var val = '^(?=.*\\b' + $.trim($(this).val()).split(/\s+/).join('\\b)(?=.*\\b') + ').*$',
            reg = RegExp(val, 'i'),
            text;

        $rows.show().filter(function() {
            text = $(this).text().replace(/\s+/g, ' ');
            return !reg.test(text);
        }).hide();
    });
于 2013-11-14T15:53:25.853 に答える