Ich habe ein li
-Element mit Html.ActionLink
erstellt, das letztendlich als Anker-Tag rendert. Ich habe CSS für Hover angewendet und es funktioniert einwandfrei.
Jetzt muss ich die li
Box markieren, wenn ich darauf klicke. Ich habe jQuery verwendet, aber das scheint nicht zu funktionieren. Ich habe die Debugger-Tools überprüft und es scheint keine Fehler zu geben. Ich denke also, dass die Klasse nicht angewendet wird. Ich bin mir nicht sicher, was das Problem ist. Bitte sehen Sie meinen Code unten.
Sie sollten über CSS Specificity lesen: Ihre .highlightMenu {}
Auswahl wird nie angewendet, weil .#navcontainer ul li {}
selector spezifischer ist. Bevorzugen Sie Klassenselektoren , lesen Sie BEM-Methodik .
Aus MDN über !important
:
Die Verwendung von
!important
ist jedoch schlechte Praxis und sollte vermieden werden, da es das Debuggen schwieriger macht, indem Sie das natürliche Cascading in Ihren Stylesheets. Wenn zwei widersprüchliche Deklarationen mit der!important
-Regel auf dasselbe Element angewendet werden, wird die Deklaration mit einer größeren Spezifität angewendet.
Wenn Sie .highlightMenu
class auf <li>
setzen möchten, wenn Sie auf <a>
klicken, können Sie jQuery verwenden. engster () dafür.
Wenn Sie Listenelemente dynamisch hinzufügen, können Sie Event Delegation verwenden.
Ich habe Ihren Code bereinigt und ihn im BEM-Stil mit den Korrekturen neu geschrieben.
Ich habe ein bisschen dein CSS und dein Skript geändert. Jetzt wird die neue Klasse den Elementen korrekt hinzugefügt.
Bitte schauen Sie sich Ссылка
anAlles Gute.
Was Sie falsch machen, ist das Targeting auf den Hyperlink, während Sie nur das Listenelement hervorheben müssen.
Aber jetzt, wenn Sie Ihren Code so korrigieren, dass er das Listenelement in der Liste anstelle der Hyperlinks anvisiert, werden Sie keine Änderungen auf dem Bildschirm sehen können. (Sie könnten natürlich die Klassen sehen, die in den Entwicklertools des Browsers umgeschaltet werden).
Warum? Da der Hyperlink innerhalb des Listenelements alle Änderungen enthält, die angezeigt werden sollen, wenn auf das Listenelement geklickt wird.
Ich habe der .highlightMenu
eine weitere CSS-Eigenschaft hinzugefügt, damit Sie die Änderungen bemerken.
Sieh dich selbst:
ul
in #navcontainer
abzielt.
.highlightMenu
enthält jetzt eine zusätzliche CSS-Eigenschaft (Gliederung), um die Stiländerungen beim Klickereignis zu erkennen.
Ich hoffe, es hat geholfen.
Für einen schnellen und einfachen Hack, mit dem Elemente beim Klicken reagieren können, aber kein Skripting erforderlich ist:
tabindex="0"
hinzu
:focus
Arbeitsbeispiel:
Der Grund, warum Ihr Code möglicherweise nicht funktioniert, ist diese Zeile
Sie haben den Anker "a" in den Selektor eingefügt, obwohl Sie das "li" -Tag markieren möchten. Es sollte eher so sein:
Ich habe dies auf fiddle.jshell überprüft und es scheint das Problem zu beheben.
Tags und Links javascript html jquery css html5