Ich habe ein Div wie folgt:
%Vor% Wenn ich auf das 'x' klicke (Ich möchte eine jquery-Funktion namens disablePopup(id);
ausführen, wobei id die ID des entsprechenden PopupDiv ist (ich habe viele popupDiv mit jeweils eigener X-Schaltfläche.
Um dies zu tun, habe ich Folgendes implementiert:
%Vor%Grundlegend bekomme ich die ID der popupCloseClass angeklickt, dann bekomme ich die ID des übergeordneten Elements (das entsprechende popupDiv) über die nächste Methode. dann rufe ich disablePopup auf.
Aber das funktioniert nicht.
Ich habe sogar versucht, die var buttonID = $(buttonID).parent().attr("id");
-Methode zu verwenden, aber auch nicht.
Ich habe auch var id = this.id;
Jede Hilfe wird sehr geschätzt
Danke
anstatt closest
zu verwenden, können Sie parent
so verwenden ...
Beachten Sie, dass Sie mit dem Schlüsselwort this
auf das Element verweisen können, das das Ereignis ausgelöst hat. Wie Sie es haben, verwenden Sie den Wert von buttonID
als Elementselektor, der den Wert "popupDivClose"
haben würde, und ohne ein #
hinzuzufügen, wird beim Start nicht nach einer ID, sondern nach einem Tag-Element gesucht namens "popupDivClose".
Wenn Sie buttonID weiterhin verwenden wollten, hätten Sie diese Codezeile verwenden können, damit es funktioniert ...
%Vor%Allerdings hätte ich es vorgezogen, das ganze Event so zu schreiben ...
%Vor% Beachten Sie die Verwendung von event.preventDefault();
. Dadurch wird sichergestellt, dass der Browser die natürliche Aktion für einen Link-Klick (z. B. Seitennavigation) nicht verarbeitet. Allerdings müssen Sie zumindest in Chrome einen href-Wert für die Navigation angeben
Sie sollten
tun %Vor% (Sie könnten auch $(this).parent().attr("id");
verwenden), aber die Verwendung von engsten ist sicherer, wenn Sie Ihre HTML-Struktur ändern
Das funktioniert gut:
%Vor% Sie sollten einfach this
anstelle der Art und Weise verwenden, wie Sie die ID erhalten und dann versuchen, sie als Selektor zu verwenden (Ihnen fehlte #
vor der ID):