如何在没有每个循环的情况下将元素属性递增1?

时间:2017-08-22 15:02:36

标签: jquery

我试图将元素的属性增加一个而不用一个“每个循环”。

以下是我的输入:

<div class="target" data="0"></div>
<div class="target" data="1"></div>
<div class="target" data="0"></div>
<div class="target" data="5"></div>

下面是预期结果

<div class="target" data="1"></div>
<div class="target" data="2"></div>
<div class="target" data="1"></div>
<div class="target" data="6"></div>

我尝试了以下但不幸的是没有成功:

$('.target').attr('data' + 1);
$('.target').attr('data', 1);

1 个答案:

答案 0 :(得分:2)

  

...一个没有一个&#34;每个循环&#34;。

你不能,你需要某种类型的循环。 attr很乐意提供一个:

$('.target').attr('data', function(_, v) {
// Note we want the *second* arg   ^^^^
    return Number(v) + 1;
});

直播示例:

&#13;
&#13;
$('.target').attr('data', function(_, v) {
    return Number(v) + 1;
});
// Show the values:
console.log("Values after update:");
$('.target').each(function() {
    console.log($(this).attr("data"));
});
&#13;
<div class="target" data="0">....</div>
<div class="target" data="1">....</div>
<div class="target" data="0">....</div>
<div class="target" data="5">....</div>
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
&#13;
&#13;
&#13;

附注:datadiv元素的无效属性。不过,您可以使用data-前缀:<div data-value="0">