2017-03-20 3 views
1

JSFiddlejQueryのトラブル

ターゲット要素の次にアクセスし、私は理由を理解することはできませんが、上記のフィドルにあなたが下キーに続いて入力に任意の文字を入力すると場合、コンソールは2つのログになります。最初は3(正しい)の値で、2番目の値は0(不正確)の値です。

私は、特定の入力、次の要素をターゲットにしようとしている:私はちょうど予想通り、それはinputを返し$(this)ログインした場合

// this works... 
console.log($('.autocomplete li').length); 
// this does not work 
console.log($(this).next('.autocomplete li').length); 

。私も.nextAll.findと様々な組み合わせを試しました。

なぜ.nextのターゲットの要素が見つかりませんか?

答えて

3

next~thisであり、liではない。である。フィルタは機能しません。

代わりに、あなたはJS-無料のソリューションを検討している、しかし$(this).next('.autocomplete').find('li')

を使用する必要があるでしょうか?

<input type="text" list="options" /> 
 
<datalist id="options"> <!-- ^-- Same identifier --> 
 
    <option>America</option> 
 
    <option>Europe</option> 
 
    <option>Japan</option> 
 
</datalist>

+0

提案をいただき、ありがとうございます。私はそれがこの質問から話題をはずしていることを知っていますが、AJAXリクエストからダイナミックにデータが入力されたときに 'datalist'を動作させるためのトリックはありますか? –

1

これは正常に動作します:

console.log($(this).next('.autocomplete').find('li').length); 

あなたは次の.autocompleteをターゲットとliを見つける必要があります。