2

選択した LI を除いて、特定の UL 内の他のすべての LI を非表示にしたいと考えています。

<ul>
  <li><div></div></li>
  <li><div></div></li>
</ul>
<ul>
  <li><div></div></li>     -- HIDE
  <li><div></div></li>     -- SELECT
  <li><div></div></li>     -- HIDE
</ul>
<ul>
  <li><div></div></li>
  <li><div></div></li>
</ul>

どうすればこれを最善の方法で解決できますか?

インデックスを使用してみましたが、動作させるのに問題があり、正しい UL を選択しました。ご覧のとおり、私は UL や LI のクラスを持っていないので、唯一の選択肢は LI だと思います。

私が実際に行っているのは、LI 内の div を選択することです。したがって、選択した LI のインデックスを次の方法で取得します。

var li_index = $(this).parent().index();
4

4 に答える 4

2

このようなことを試しましたか?

$(this).closest('ul').find('li').not(this).hide();

または

$('li', $(this).closest('ul')).not(this).hide();
于 2012-06-20T06:12:54.170 に答える
2

クリックされた div から DOM をトラバースし、他の要素を非表示にします.not($(this).parent()).toggle()->liこれを囲むものではありませんdiv

$('div').click(function () {
    $(this).closest('ul').find('li').not($(this).parent()).toggle();
});

.toggle().hide()ユーザーが決定を元に戻せないようにする場合は、に置き換えることができます。

JS フィドル: http://jsfiddle.net/tDmy3/2/

于 2012-06-20T06:23:40.620 に答える
0

関連するすべての要素を含む jQuery 要素セットを取得し<li>、選択した要素を削除します。例えば:

$('ul#mylist li').not(selector).hide();

JQueryのドキュメントから:

DOM 要素のセットを表す jQuery オブジェクトを指定すると、.not() メソッドは、一致する要素のサブセットから新しい jQuery オブジェクトを構築します。提供されたセレクターは、各要素に対してテストされます。セレクターに一致しない要素が結果に含まれます。

セレクターの代わりに、参照がある場合は要素オブジェクト自体を指定することもできます。

于 2012-06-20T06:13:03.330 に答える
0

これはうまくいくはずです:

$( 'ul li' ).click( function( e ) {
        // by default, hide all li's
    $( 'ul li' ).hide();
        // show only the selected li
    $( this ).show();
});

http://jsfiddle.net/BqKun/

お役に立てれば。

于 2012-06-20T06:21:24.410 に答える