Mam na stronie kilka div
s 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 div
w ramach bieżącego wyboru? Google nie przedstawił mi żadnych pomocnych informacji.
Odpowiedzi:
4 dla odpowiedzi № 1Powinno 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.