2012-10-29 14 views
5

このコードは機能しません。 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 
      }); 
    }); 

メニューのすべてのaの要素を選択しますので、私はnav.menu>ul>li>aを行うことはできません。

答えて

10
$(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'); 
    }); 
}); 
1

$('a', this)あなただけ

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

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

$(this).find('a').addClass('hover_triangle')thisオブジェクトの内部を見ることができます - する必要はありませんbacauseより一般的な方法ダイレクトチャイルド

0

あなたはちょうどあなたが必要とすることを避けるために... .find('a')も、ネストされたアンカーを取得する直接の子を選択したい場合

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

これはのみnav.menu>ul>li

CHECK FIDDLE

の直接の子要素にアクセスします.find('> a')または.children('a')

0

thisの子孫を検索する2つの方法があります。ほとんどの場合、find()と回答しています(読みやすくなります)が、jqueryセレクタにはcontextという2番目のアルファイントもあります。

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

APIのRefrence使用: jQuery(selector [, context])

関連する問題