0

jQueryは「if」関数を実行できますか? たとえば、あるメニュー項目にクラスが存在する場合、そのクラスを別のメニュー項目に適用しますか? アクティブなドロップダウン メニューと子ページを扱っているため、これは通常のアクティブなページ メニューの強調表示とは少し異なります。

私がやりたいことは

(the usual suspect) $(document).ready(function() {

もしも...

$('#menu-main-menu li.menu-item-1061') "contains the classes
current-menu-ancestor current-menu-parent"

    then add those same classes to, i.e.:

    $('#menu-main-menu li.menu-item-1099').addClass('current-menu-ancestor
current-menu-parent')

}); });

これが機能する方法である必要があります....

4

4 に答える 4

9

jQuery は言語ではなく、JavaScript のライブラリです。答えは、「はい、JavaScriptifには言語の一部としてステートメントがあります」です。

あなたが書いた疑似ロジックがわかりません。「If [some list item] 'contains the classes' [foo] [bar]」とはどういう意味ですか? リスト項目にこれらのクラスの両方がある場合は? それらのクラスのいずれか?または、リスト項目にこれらのクラスの少なくとも 1 つを持つ子孫がある場合は? または、リスト アイテムにこれらすべてのクラスを持つ 1 つ以上の子孫がある場合はどうなるでしょうか。

1 つの解釈を使用したソリューションを次に示します。

jQuery(function($){
  var li = $('#menu-main-menu li.menu-item-1061');
  if ( li.find('.current-menu-ancestor, .current-menu-parent').length ){
    // do whatever you want here.
  }
});
于 2011-01-04T20:59:10.557 に答える
2

これの存在について適切なif発言をするだけですか?

$('#menu-main-menu li.menu-item-1061.current-menu-ancestor.current-menu-parent')
于 2011-01-04T21:04:54.853 に答える
2

指摘したようにif、特に jQuery ではなく、JavaScript の構成要素です。あなたが探しているのはhasClass、クラスの名前に対してDOM要素をチェックし、要素が現在そのクラスを持っている場合はtrueを返すjQuery関数だと思います。

次のように使用できます。

if (myElement.hasClass("myClass")) {
    // do something
}

コンストラクト内でif、クラスを他の要素に追加するコードを挿入できます。

更新:あなたの例は少し奇妙です。「このセレクターに一致する要素のセットには、クラスcurrent-menu-ancestorcurrent-menu-parent?」一連の要素を照合しているため、これは奇妙です(最も具体的なセレクターはクラスであるため、複数の項目が返される可能性があります)。menu-item-1061クラスはクラスではなく ID (一意) であるように聞こえるため、HTML/CSS に設計エラーがあるようです。どちらの場合でも、一致した要素のいずれかにクラスがある場合hasClassに返されるため、関数は引き続き機能します。true

于 2011-01-04T21:16:29.103 に答える
2

Javascript はifステートメントを実行できますが、jQuery ではis関数を使用して、jquery オブジェクトが別の式に適合するかどうかを判断できます。

たとえば、このjqueryオブジェクトがあります

var firstObj = $(".selector1")

そして、要素のいずれかがこの式に適合するかどうかをテストしたい

".selector2"

isその後、次のように使用できます

firstObj.is(".selector2")

いずれかの要素が適合する場合、応答は「true」になり、そうでない場合は「false」になります。if次のようにjavascriptと組み合わせることができます

if (firstObj.is(".selector2")){
    // you can do something here
}

それが役に立てば幸い

于 2011-01-04T21:21:19.627 に答える