var target = $(this).attr("href");
if {target is child of ('.wrapper')} then (do something)
prosta składnia? Czy ktoś może mi pokazać poprawną składnię?jquery: jeśli (miejsce docelowe) jest potomkiem (".wrapper"), to (zrób coś)
var target = $(this).attr("href");
if {target is child of ('.wrapper')} then (do something)
prosta składnia? Czy ktoś może mi pokazać poprawną składnię?jquery: jeśli (miejsce docelowe) jest potomkiem (".wrapper"), to (zrób coś)
if($(target).parents('.wrapper').length > 0) {
//do something...
}
.has()
jest chyba Mose wygodna składnia:
if($('.wrapper').has($(target))) {
// do something
}
Jeszcze bardziej "potężny" (pod względem wydajności) jest $.contains()
. Więc idealnym algorytm powinien wyglądać następująco:
var $wrapper = $('.wrapper'),
$target = $(this).attr('href');
if($.contains($wrapper[0], $target[0])) {
// do something
}
Reference: .has(), $.contains()
+1 dla '$.zawiera() 'który jest jawnie opisany przez jQuery API jako" Sprawdź, czy element DOM jest potomkiem innego elementu DOM. " – gfullam
Nie polecam używania '.has()' zgodnie z opisem, ponieważ nie zwraca ono wartości boolowskiej takiej, jakiej można by się spodziewać. Zamiast tego filtruje oryginalny zestaw elementów DOM i zwraca nowy obiekt jQuery. ("Opis: Zmniejsz zestaw dopasowanych elementów do tych, które mają potomka, który pasuje do selektora lub elementu DOM.") Tak więc mimo, że _powoduje to, że w tym przypadku wynik jest prawidłowy, myślę, że wartość zwracana jest nieintuicyjna i może powodować bóle głowy jeśli założysz, że zwraca wartość boolowską. –
nie można powiązać innego zdarzenia? .
$('.wrapper *').click(function() {
// will execute on childrens of .wrapper
});
Małe zmiany kodu Jacoba, jeśli dziecko jest głębsza niż jeden poziom w
if($(target).parents('.wrapper').length) {
//do something...
}
Oto porządniej sposób: powiązać go jako plugin jQuery. Może się okazać łatwiejsze do zrozumienia i użycia.
$.fn.isChildOf = function(element)
{
return $(element).has(this).length > 0;
}
Zastosowanie:
if ($('.target').isChildOf('.wrapper')) {
//do all the things.
}
Wiem, że to stary post, ale może to być przydatne dla kogoś. Wydaje mi się, że w wielu przypadkach za pomocą .closest() miałby lepszą wydajność:
if ($(target).closest('.wrapper').length){
// your code here
}
<div class="parent">
<div class="child">
</div>
</div>
$(".child").is(".parent .child")
jaki jest kontekst dla tej odpowiedzi, wygląda jak kopia kodu i wklejona skądś. Czy możesz go przedłużyć wprowadzeniem lub opisem? – Farside
Chociaż ten kod może odpowiedzieć na pytanie, podanie dodatkowego kontekstu dotyczącego * how * i/lub * dlaczego * rozwiązuje problem, poprawi długoterminową wartość odpowiedzi. - [Z recenzji] (http://stackoverflow.com/review/low-quality-posts/13223379) –
Mała modyfikacja zamiast $ (target) używać $ (this) jako docelowa zawiera łańcuch. –
Należy zauważyć, że ten test sprawdza, że obiekt docelowy jest bezpośrednim potomkiem opakowania. – cherouvim
@Chinmayee, 'href' wskazuje na rzeczywisty" identyfikator "elementu, który OP chce sprawdzić, a nie" ten ". –