2013-07-19 16 views
42

Jak mogę wybrać klasę z tego obiektu this?Jquery wybierz tę + klasę

$(".class").click(function(){ 
     $("this .subclass").css("visibility","visible"); 
}) 

Chcę wybrać $(this+".subclass"). Jak mogę to zrobić z Jquery?

Odpowiedz

83

Zastosowanie $(this).find() lub przekazać to w kontekście jQuery context with selector.

Korzystanie $ (this) .find()

$(".subclass").click(function(){ 
    $(this).find(".subclass").css("visibility","visible"); 
}); 

Korzystanie this w kontekście $(selector, context) będzie wewnętrznie wywołać funkcję znaleźć, więc lepiej używać znaleźć się na pierwszym miejscu.

$(".subclass", this).click(function(){ 
    $(this).find(".subclass").css("visibility","visible"); 
}); 
+1

Jeśli funkcja 'find()' jest wywoływana wewnętrznie w drugiej metodzie, dlaczego wciąż wywołujesz ją ręcznie? – shaneparsons

11

Zastosowanie find()

$(this).find(".subclass").css("visibility","visible"); 
+0

+1 za bycie pierwszą poprawną odpowiedzią. – zurfyx

20

Może coś takiego: $(".subclass", this);

+0

To jest świetna alternatywa. za pomocą kontekstu +1 – iConnor

+0

@Connor Jest to alternatywa, ale nie jest tak wspaniała. Anyway +1 too –

+0

Doceniam twoją opinię @roasted – iConnor

3

Co szukasz to:

$(".subclass", this).css("visibility","visible"); 

Dodaj this po klasie $(".subclass", this)

+0

To bardzo mi pomogło, gdy próbowałem ożywić SVG i coś poszło nie tak, jak tego potrzebowałem. – Xander

1

jeśli potrzebujesz wydajności wykorzystania sztuczka poniżej:

$(".yourclass", this); 

Metoda find() przeszukuje za każdym razem w selektorze.

1

Cóż za pomocą znaleźć jest najlepszym rozwiązaniem tutaj

po prostu używać jak to

$(".class").click(function(){ 
     $("this").find('.subclass').css("visibility","visible"); 
}) 

a jeśli istnieje wiele klas z tej samej klasy i nazwisko jej zawsze lepiej podać nazwę klasy klasa rodzicielska taka jak ta

$(".parent .class").click(function(){ 
      $("this").find('.subclass').css("visibility","visible"); 
    }) 
Powiązane problemy