あなたが抱えている問題は、構文が単一のプラグイン インスタンスをセレクタ内のすべての項目に適用することです。
$('.inp_txt').quicksearch(...)
呼び出しに似('.inp_txt').click(...)
ています-一致するすべての要素に使用される1つのハンドラーを取得します。
これを回避するには、次のようなことを行う必要があります。
$('.inp_txt').each(function (index, value) {
var $input = $(value);
// Get a reference to the list you want for this input...
var $quickSearch = $('ul.myList li');
$input.quicksearch($quicksearch);
});
このコードは、各.inp_txt
項目をループし、それぞれに固有のハンドラーを適用します。
あなたのシナリオでは、1 つしかないようにul.myList
思えます。これが、常に同じリストが表示される別の理由である可能性があります。その場合は、次のように考えることができます...
<div>
<input type="text" class="inp_txt" />
<ul class="myList">
<li>...</li>
</ul>
</div>
次に、上記のコードを次のように適合させることができます。
$('.inp_txt').each(function (index, value) {
var $input = $(value);
var $quickSearch = $input.siblings('ul.myList');
$input.quicksearch($quicksearch);
});
このようにして、テキスト ボックスごとに一意のリストを取得します。明らかに、これがアプリのロジックで可能かどうかを知るためのシナリオの残りの部分はわかりませんが、おそらく.
最後に、新しいコントロールを追加するときは、それらを作成しているコードを調整して、新しいハンドラーもそれらにアタッチする必要があります。何かのようなもの:
function addInput(/*... params ...*/) {
/* Do your logic to create the control */
$newInput.quicksearch($newList);
}
上記のコードでは、明らかに、$newInput
new となる要素と<input type="text" />
、 と呼ぶ新しいリストを作成することが想定されています$newList
。
これがお役に立てば幸いです-そうでない場合は、お気軽にコメントを投稿して明確にしてください。回答を適応させようとします。