0

私はこれで頭を悩ませていますが、何度か失敗した後、誰かが助けてくれることを望んでいました.

次のような HTML リストがあります。

<ul>
<li><span class="current"></span></li>
<li><span class="normal"></span></li>
</ul>

このリストで、ul にある番号で現在のクラスのスパンを持つ li 要素を見つける方法を見つけようとしています。したがって、この場合は 1 になります。

さまざまなjquery関数を使用してみましたが、どこにも行けないようです。これは今のように見えます:

var list = $('ul li');
$.each(list, function(key, value) {
    if( $(this).find('.current') ) {
        alert(key);
    }
});

これは単に 0 と 1 を警告するだけで、基本的に機能しないことを意味します。私がやっていることの何が悪いのか、誰にも分かりませんか?

4

3 に答える 3

3

そうではあり0ません1(JavaScript のインデックスはゼロです) が、次のようになります。

$('li:has(span.current)').index();

JS Fiddle デモ、およびより大きなテーブルの例

または、次を使用できます。

$('span.current').parent().index();

JS Fiddle デモ、およびより大きなテーブルの例

または:

$('span.current').closest('li').index();

JS Fiddle デモ、およびより大きなテーブルの例

参考文献:

于 2012-11-02T19:26:53.640 に答える
1

jQuery セレクターは (決して) falsey 値を返しません。次のようなものです:

$(this).find('.current')

ifステートメントでは常に true を返します。存在を確認する簡単な方法はlength 、セレクターから見つかった要素の数を示すプロパティを使用することです。

if ($(this).find('.current').length > 0) {
于 2012-11-02T19:40:21.110 に答える
0

コードはリスト内の各項目をループし、そのキーを表示します。

あなたが望むのはもっと似ています:

$('mylist').find('.current').each(function(key, value)
    {
        alert(key);
    }

これは、クラスが「current」のアイテムのみをループします。

于 2012-11-02T19:31:00.233 に答える