0
jQuery('li.has-sub ul li:even').addClass('even');
jQuery('li.has-sub ul li:odd').addClass('odd');

クラスはドロップダウンメニューに追加されています。1つのドロップダウンメニューではクラスが正しく追加されますが、別のドロップダウンではeven奇数要素にクラスが追加されます。jqueryはすべてのリスト項目を一緒にカウントしている可能性があると思いますが、それでも1を偶数としてカウントしている理由は説明されていません。このURLで問題を確認できます。

ラフティングツアーから始まる黄色の背景のメニュー。
http://bit.ly/XAEmh7

jQueryが問題のulのみをカウントするように追加しようとしthisましたが、運がありません。

4

2 に答える 2

1

jQueryは、コードを指定すると正しく動作します。

jQuery('li.has-sub ul li:even').addClass('even');
jQuery('li.has-sub ul li:odd').addClass('odd');

次のように変更した場合:

jQuery('li.has-sub').each(function(){
   jQuery('ul li:even',this).addClass('even');
   jQuery('ul li:odd',this).addClass('odd');
});

動作するはずです。

于 2013-02-14T01:45:08.937 に答える
0

:ODD /:EVENセレクターは0ベースのインデックスであるため、2行目、4行目などが奇数として強調表示されます(インデックス1、3など)。

また、パフォーマンスを向上させるには、次のように.filterを使用する必要があります。

$(document).ready(function() {
    $('li ul').filter(':even').addClass('even').end()
              .filter(':odd').addClass('odd');
});

jQueryのドキュメントを参照してください:http://api.jquery.com/odd-selector/

于 2013-02-14T02:05:03.290 に答える