13

このコードは機能していません。this+'>a'は有効な構文ではありません。では、どのように の子クラスを追加/削除できthisますか? この場合はa要素です。

 jQuery(function ($) {
        $("nav.menu>ul>li").hover(
            function () {
               $(this+'>a').addClass("hover_triangle");//error
            },

            function () {
               $(this+'>a').removeClass("hover_triangle");//error
            });
    }); 

メニュー内nav.menu>ul>li>aのすべての要素を選択するため、できません。a

4

5 に答える 5

24
$(this).children('a').addClass('hover_triangle');

そして完全なコードで:

jQuery(function($) {
    $('nav.menu>ul>li').hover(function() {
       $(this).children('a').addClass('hover_triangle');
    },function() {
       $(this).children('a').removeClass('hover_triangle');
    });
}); 
于 2012-10-29T01:27:50.490 に答える
2

$('a', this)thisオブジェクトの内側だけを見ることができます

jQuery(function ($) {
    $("nav.menu>ul>li").hover(
        function () {
           $('a', this).addClass("hover_triangle");//error
        },

        function () {
           $('a', this).removeClass("hover_triangle");//error
        });
});
于 2012-10-29T01:28:50.213 に答える
2

使用できます.find()

$(this).find('> a').addClass("hover_triangle");

これは、の直接の子要素にのみアクセスしますnav.menu>ul>li

フィドルをチェック

直接の子を選択したいだけの場合は.find('a') 、ネストされたアンカーも取得します。それを避けるには、またはのいずれ.find('> a')かを使用する必要があります.children('a')

于 2012-10-29T01:30:55.810 に答える
1

$(this).find('a').addClass('hover_triangle')- 直接の子供である必要がないため、より一般的な方法

于 2012-10-29T01:29:14.010 に答える
1

の子孫を検索するには 2 つの方法がありますthis。ほとんどの人はfind()(そして読みやすい) で返信していますが、jquery セレクターにはcontext.

$('a', this)は別の構文であり、 と同じ$(this).find('a)です。内部的には、jQuery は最初のケースを取り、find()とにかく使用しますが、構文は有効であり、多くの人がそれを使用しています

API リファレンス: jQuery( セレクター [, コンテキスト] )

于 2012-10-29T01:36:54.780 に答える