根据其 innerHtml 将 class 添加到一个列表项
Add class to one list item based on its innerHtml
我想使用 jQuery 根据与跨度的 innerHtml 值匹配的 innerHtml 值在一个列表项上设置 class。
我已经成功编写了以下代码:
if ($(".number").text() === "1") {
$("li:eq(0)").addClass("selected");
}
if ($(".number").text() === "2") {
$("li:eq(1)").addClass("selected");
}
if ($(".number").text() === "3") {
$("li:eq(2)").addClass("selected");
}
.selected {
background-color: #dFd;
}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<span class="number">2</span> <ul id="menu"> <li>1</li> <li>2</li> <li>3</li> </ul>
不过,我觉得它可以做得更高效,写得更整洁。我该如何改进此代码?
你可以去掉所有的if
,方法是首先将选定的值放入一个变量中,然后在设置class时将其用作参数:
var selected = parseInt($(".number").text(), 10) - 1;
$("li:eq("+selected+")").addClass("selected");
请注意,如果您希望将值限制为 1..3
,如您的示例所示,您必须先设置 if (selected >= 1 && selected <= 3)
,然后再设置 class。
我想使用 jQuery 根据与跨度的 innerHtml 值匹配的 innerHtml 值在一个列表项上设置 class。
我已经成功编写了以下代码:
if ($(".number").text() === "1") {
$("li:eq(0)").addClass("selected");
}
if ($(".number").text() === "2") {
$("li:eq(1)").addClass("selected");
}
if ($(".number").text() === "3") {
$("li:eq(2)").addClass("selected");
}
.selected {
background-color: #dFd;
}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<span class="number">2</span> <ul id="menu"> <li>1</li> <li>2</li> <li>3</li> </ul>
不过,我觉得它可以做得更高效,写得更整洁。我该如何改进此代码?
你可以去掉所有的if
,方法是首先将选定的值放入一个变量中,然后在设置class时将其用作参数:
var selected = parseInt($(".number").text(), 10) - 1;
$("li:eq("+selected+")").addClass("selected");
请注意,如果您希望将值限制为 1..3
,如您的示例所示,您必须先设置 if (selected >= 1 && selected <= 3)
,然后再设置 class。