2012-10-29 5 views
5

Dieser Code funktioniert nicht. this+'>a' ist keine gültige Syntax. Also, wie kann ich eine Klasse in einem Kind von this hinzufügen/entfernen? In diesem Fall ein a Element.Klasse zu Kind hinzufügen

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

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

Ich kann nicht nav.menu>ul>li>a tun, weil alle a Elemente in Menü auswählen.

Antwort

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

und mit dem vollständigen Code:

jQuery(function($) { 
    $('nav.menu>ul>li').hover(function() { 
     $(this).children('a').addClass('hover_triangle'); 
    },function() { 
     $(this).children('a').removeClass('hover_triangle'); 
    }); 
}); 
1

$('a', this) Sie nur innerhalb des this Objekt

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') suchen können - häufiger Weg bacause es nicht notwendig ist, zu sein ein direktes Kind

0

Sie könnenverwenden

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

Dies wird die unmittelbar untergeordneten Elemente von nav.menu>ul>li

CHECK FIDDLE

Wenn Sie die unmittelbaren Kinder nur auswählen möchten Zugriff nur auf .find('a') auch die verschachtelten Anker bekommen .. Um zu vermeiden, dass Sie benötigen entweder .find('> a') oder .children('a') verwenden

0

Es gibt 2 Methoden, nach Nachkommen von this zu suchen. Die meisten haben mit find() geantwortet (und es ist einfacher zu lesen), aber ein jquery Selektor kann auch eine zweite Argumentation haben, die context ist.

$('a', this) ist eine andere Syntax und ist identisch mit $(this).find('a). Internallly nehmen jQuery den ersten Fall und verwenden find() sowieso, aber die Syntax ist gültig und viele verwenden es

API refrence: jQuery(selector [, context])