/ / Podselekcja JQuery nie działa zgodnie z oczekiwaniami - jquery, selektory jquery

Podselekcja JQuery nie działa zgodnie z oczekiwaniami - jquery, selektory jquery

Mam na stronie kilka divs w sposób

<div id="{{ myId }}" class="typelist"><!-- content goes here --></div>

Ponadto istnieje lista „linków” w następujący sposób:

<a href="#" onclick="showThis({{ myId }})">{{ myDescriptiveName }}</a>

Odpowiednia część JS wygląda następująco:

function showThis(id) {
var divs = $("div.typelist");
divs.hide();
divs.find("#" + id).show();
}

Chcę poszukać div z identyfikatorem id w bieżącym wyborze i przełącz go na „widoczny”. Teraz to zrozumiałem find() wyszukuje tylko dzieci i „wnuki”, co wyjaśnia, dlaczego powyższe nie działa zgodnie z oczekiwaniami.

Ale jak właściwie znaleźć pożądane divw ramach bieżącego wyboru? Google nie przedstawił mi żadnych pomocnych informacji.

Odpowiedzi:

4 dla odpowiedzi № 1

Powinno być

function showThis(id) {
var divs = $("div.typelist");
divs.hide();
$("#" + id).show();
//or divs.filter("#" + id).show();
//or divs.filter("[id="" + id + ""]").show();
}

kiedy używasz .odnaleźć(), szuka potomków divs elementy, ale w twoim przypadku element, którego szukasz, należy do divs elementy.

W takim przypadku musisz użyć .filtr() zamiast .odnaleźć(), ale ponieważ w tym przypadku masz identyfikator, możesz bezpośrednio użyć selektor id


1 dla odpowiedzi nr 2
function showThis(id) {
var divs = $("div.typelist");
divs.hide();
$("#" + id, divs).show();
}

To szuka identyfikatora w twoim wyborze. Ale i tak twój identyfikator powinien być unikalny. Tak więc odpowiedź Aruna P. Johnyego jest najlepsza.