私は検索ボックスを持っています。私は繰り返しdivをフィルタリングするためにjQueryとkeyupを使用しています。jQuery - using:ネストされたdiv /クラスを含む即時検索のためのcontains?
各div要素は次のようになります。
<div class="searchCell" id="searchCell' . $id . '">';
<div class="friendName">
// someNameOutputWithPHP.
</div>
</div>
を今、私は名前のテキストに基づいてフィルタリングします。 someNameOutputWithPHPに検索クエリが含まれている場合、searchCell全体が表示されます()。そうでない場合は、searchCell全体をhide()する必要があります。
これは、しかし、動作しません:
<script type="text/javascript">
$(document).ready(function() {
$("#searchbox").keyup(function() {
var searchValue = $(this).val();
if(searchValue === "") {
$(".searchCell").show();
return;
}
$(".searchCell").hide();
$(".searchCell > .friendName:contains(" + searchValue + ")").show();
});
});
</script>
EDIT
新しい問題を:私は私が望むどのように表示するdiv要素のショーを()です。しかし:containsは正しく動作していません。
たとえば、名前の1つがRyanです。私が「Ryan」を検索すると、何も得られません。しかし、私は 'ヤン'を検索するときに私はライアンのdivを取得します。
何が問題なのですか。
がここにあります:
$(".friendName:contains(" + searchValue + ")").parent().show();
サイドノート: 'keyup'はおそらくあなたが望むイベントではありません。キーリピート(キーを押して保持するなど)ではなく、キーアップ時にのみ起動します。 'keypress'を使うかもしれませんが、それは人のバックスペーシングを捕まえたり、マウスでフィールドに貼り付けることはありません(右クリックし、ほとんどのOSのメニューから" Paste "を選択します)。残念ながら、フィールドの変更を検出する唯一の*信頼できる方法は、それをポーリングすることです( 'focus'をポーリングし、' blur 'を止めて、あなたが不必要にポーリングしないようにしてください)。 –
さて、私の編集で検索の問題を解決するために使用できるワイルドカードのいくつかの並べ替えはありますか? –