2
フィルタを使用して、2つの異なるデータ属性(一般的なテキストに加えて)に特定の値を含むテーブル行を検索しようとしています。データ属性によるフィルタリング
2つのデータ属性から値を正しく読み取れないようです。値(licDataとstateData)をコンソールに出力すると、 'undefined'が表示されます。もちろん、検索は失敗します。
JS
var $rows = $('.livesearch tr');
$('#search').keyup(function() {
var val = $.trim($(this).val()).replace(/ +/g, ' ').toLowerCase();
$rows.show().filter(function() {
var text = $(this).text().replace(/\s+/g, ' ').toLowerCase();
var licData = $(this).find('td').attr('data-lic');
var stateData = $(this).find('td').attr('data-state');
console.log(text + '-' + licData + '-' + stateData + '<br>');
if (!~stateData.indexOf(val) || !~licData.indexOf(val) || !~text.indexOf(val)) {
return true;
} else {
return false
}
}).hide();
});
SAMPLE表の行
<tr>
<td>Aaron</td>
<td>Ellebrach</td>
<td>Clerical</td>
<td>444-444-4444</td>
<td>Call</td>
<td data-lic="special">C</td>
<td data-state="state data here">CA</td>
</tr>
ありがとうplalash、。何らかの理由で、これらの2つの項目でindexOf(val)をテストしようとするとエラーが発生します。 'text'変数をテストするとうまく動作しますが、stateDataとlicDataの両方が返されます:TypeError:undefinedがオブジェクトではありません( 'licData.indexOf'を評価しています) – Doug
ここで何が問題なのかよくわかりません。 [jsFiddle](http://jsfiddle.net/)の問題を示す機能的な例を投稿してください。それは本当にあなたのコードの問題を理解するのに役立ちます。また、可能であれば、新しい質問として投稿し、他のユーザーもそれを見て解決策を提供することができます。 –
jsFiddleのセットアップはこちら:https://jsfiddle.net/dmacy/148zdhm7/。 licDataとstateDataがIF句から削除された場合、それは動作し、コンソールにはデータを取得するvarsが表示されます。しかし、これらの2つのvarsでindexOfを使用すると問題があるようです。 thx – Doug