2

これは簡単かもしれませんが、機能させるのに苦労しています。リストを反復処理するために .each() を使用しています。インデックスを使用してクラスを削除できるかどうか疑問に思っていました。

例えば。リストに 10 個の項目があり、たとえば 8 番目の要素をクリックしたときに 5 番目の要素からクラスを削除したい場合。

$(function () {
var items = $('#v-nav>ul>li').each(function (index) {
    $(this).click(function () {
        if (index = 8)
{
$(#5).removeClass('class');
}
    });
});

アイデアのある人はいますか?ありがとうございました

4

3 に答える 3

7

変化する

$(#5).removeClass('class');

$('#v-nav>ul>li:eq(4)').removeClass('class');

セレクターから返された要素を割り当てて、同じ処理を再度実行して目的の要素を取得することをお勧めします。

$(function () {
    var items = $('#v-nav>ul>li')

       $('#v-nav>ul>li').click(function () {
          if ($(this).index() = 8)
          {
             $(items).eq(4).removeClass('class');
          }
       });
});
于 2012-11-30T16:07:17.957 に答える
1

each()各要素にはすでにインデックスがあり、 を使用eq()すると、DOM にあるインデックスに基づいて要素を選択できるため、を反復処理する必要はありません。この解決策は、要素が siblings() などに依存しています。

$(function () {
    var elems = $('#v-nav>ul>li');

    elems.on('click', function() {
        if ($(this).index()==8) elems.eq(4).removeClass('class');
    });
});

クリックをその 1 つの要素にバインドすることもできます。

$(function () {
    $('#v-nav>ul>li:eq(7)').on('click', function() {
         $(this).siblings().filter(':eq(4)').removeClass('class');
    });
});

それ以外の場合は、次のようにします。

$(function () {
    var elems = $('#v-nav>ul>li');
    $.each(elems, function(idx, elm) {
        if (idx==8) elems.eq(4).removeClass('class');
    });
});

補足として、数字だけで構成される (または数字で始まる) ID は無効です。

于 2012-11-30T16:08:39.333 に答える
0

実際には、すべての要素を反復処理する必要はありませんli。代わりに、このようにすることができます

$(function(){
  $('#v-nav>ul>li').eq(7).on('click', function(){ // eq(7) is 8th li
    $(this).closest('ul').find('li').eq(4).removeClass('cls'); //eq(4) is 5th li
  });
});

デモ

于 2012-11-30T16:30:55.180 に答える