/ / Unterauswahl von JQuery funktioniert nicht wie erwartet - jquery, jquery-selectors

Die Unterauswahl von JQuery funktioniert nicht wie erwartet - jquery, jquery-selectors

Ich habe auf einer Seite mehrere divs in der Art von

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

Es gibt auch eine Liste von "Links" auf folgende Weise:

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

Der entsprechende JS-Teil sieht folgendermaßen aus:

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

Was ich tun möchte, ist, mit der ID nach dem Div zu suchen id in der aktuellen Auswahl und schalte es auf "sichtbar". Das habe ich jetzt verstanden find() sucht nur nach Kindern und "Enkelkindern", was erklärt, warum das oben genannte nicht wie erwartet funktioniert.

Aber wie finde ich das gewünschte richtig divinnerhalb der aktuellen Auswahl? Googeln brachte mir keine hilfreichen Informationen.

Antworten:

4 für die Antwort № 1

Es sollte sein

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

wenn du benutzt .finden()Es sucht die Nachkommen der divs Elemente, aber in Ihrem Fall ist das Element, das Sie suchen, unter den divs Elemente.

In diesem Fall müssen Sie verwenden .Filter() Anstatt von .finden(), aber da Sie in diesem Fall eine ID haben, können Sie die direkt verwenden ID-Selektor


1 für die Antwort № 2
function showThis(id) {
var divs = $("div.typelist");
divs.hide();
$("#" + id, divs).show();
}

Dies sucht nach der ID in Ihrer Auswahl. Aber Ihre ID sollte trotzdem eindeutig sein. Also ist die Antwort von Arun P Johny die beste.