Wie die anderen gesagt, .text()
kehrt viele unnötige Leerräume (die einige HTML-Tags sein sollte), zum Beispiel <li><a>123</a></li>
{bunch of spaces}123{bunch of spaces}
zurückkehren wird, weil der Anker-Tag a
durch Leerzeichen ersetzt worden, wäre es nicht so sein, Art von Leerzeichen, wenn wir stattdessen $("li a").text()
verwenden, da kein HTML-Tag-Ersatz auftritt.
Allerdings nutze ich persönlich .text()
als Wertvergleich selten. Die bessere Praxis wäre die Verwendung der data-*
Attr der Elemente, vermeiden Sie die data-
Präfix, wenn es ein Make-up-Attr ist, um andere Programmierer zu verwirren.
JsFiddle: http://jsfiddle.net/Zay_DEV/o2gxgz9r/19/
var AcceptedValues = ["english", "abc"],
ListItems = $(".languageDropdown li").each(function(){
var $this = $(this);
$this.attr("data-value", $this.text().trim().toLowerCase()); // Bind their text to data-value
}).on("click", function() {
var $this = $(this),
Value = $this.attr("data-value");
if ($.inArray(Value, AcceptedValues) >= 0) // Search if the value inside the array
alert("You just clicked '" + Value.toUpperCase() + "'");
else alert("Wrong value");
});
a{
font-size:12px;
color:#000;
text-decoration:none;
}
li a{
padding-left:20px;
}
li a:hover{
color:blue;
}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.8.3/jquery.min.js"></script>
<span class="language">
<a href="#">
ENG
</a>
<i class="fa fa-caret-down" aria-hidden="true"></i>
</span>
<ul class="languageDropdown">
<li>
<a href="#">
ABC
</a>
</li>
<li>
<a href="#">
ENGLISH
</a>
</li>
<li>
<a href="#">
SPANISH
</a>
</li>
<li>
<a href="#">
ARABIC
</a>
</li>
<li>
<a href="#">
TELUGU
</a>
</li>
</ul>
siehe meine Antwort bitte, ich habe Ihnen gezeigt, wie man es tun, ohne viel von Ihrem vorhandenen Code zu ändern. –