当我们有多个列表时循环jquery函数

时间:2017-09-09 20:15:24

标签: jquery html loops

下面的脚本应该添加'选择'类到无序列表中的项目,由跨越它的数字表示。

当我有一个包含一个范围和列表的单个分区时它正在工作,但是当我多次重复它时它不工作。

任何人都可以解释为什么并建议我如何重复它?

var selected = parseInt($(".number").html(), 10) - 1;
$('.number').parent(".quantity-select").find("li:eq("+selected+")").addClass("selected");

<div class="quantity-select">
<span class="number">1</span>
<ul id="menu">
    <li>1</li>
    <li>2</li>
    <li>3</li>
</ul>
</div>
<div class="quantity-select">
<span class="number">3</span>
<ul id="menu">
    <li>1</li>
    <li>2</li>
    <li>3</li>
</ul>
</div>

1 个答案:

答案 0 :(得分:0)

selected变量只会获取第一个值,因此当您将其应用于多个列表时,您将使用相同的单个值。

您需要一个循环,并在每次迭代中获取selected值。 我建议循环包装div元素,如下所示:

$(".quantity-select").each(function () {
    var selected = $(".number", this).text() - 1;
    $("li:eq("+selected+")", this).addClass("selected");
});
.selected { background: yellow }
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<div class="quantity-select">
    <span class="number">1</span>
    <ul id="menu">
        <li>1</li>
        <li>2</li>
        <li>3</li>
    </ul>
</div>
<div class="quantity-select">
    <span class="number">3</span>
    <ul id="menu">
        <li>1</li>
        <li>2</li>
        <li>3</li>
    </ul>
</div>