gpt4 book ai didi

javascript - 遍历所有跨度并使用 JQuery 更新一个字段

转载 作者:行者123 更新时间:2023-11-30 12:09:56 25 4
gpt4 key购买 nike

我的 html 代码中有几个跨度,我将更新其中一个。因此,我在该跨度的属性 data-id 中为每个跨度赋予了一个唯一编号。该跨度还有一个名为 votes 的类。

现在的问题是,如果我遍历所有跨度,我会检查元素的 data-id 是否等于我通过 SignalR 方法从服务器接收到的 id。

这是一些 html:

<span data-id="7" class="votes">3</span>
<span data-id="9" class="votes">-1</span>

下面的代码不会更新我将更新的跨度。

var voteSpans = $(".votes");
var number = voteSpans.length;

for (var i = 0; i < number; i++) {

if (voteSpans[i].dataset.id == receivedId) {

var oldVotes= parseInt(voteSpans[i].html());
voteSpans[i].html(oldVotes+ parseInt(newVotes));
}
}

但是这段代码会更新类 votes 的所有范围:

var voteSpans = $(".votes");
var number = voteSpans.length;

for (var i = 0; i < number; i++) {

if (voteSpans[i].dataset.id == receivedId) {

var oldVotes= parseInt(voteSpans[i].html());
voteSpans.html(oldVotes+ parseInt(newVotes));
}
}

查看最后一行代码之间的差异。

这是怎么来的?

最佳答案

那是因为您使用括号符号来获取元素。 jQuery 对象是一个类似数组的对象。如果您使用括号表示法,则返回指定索引处的值。

返回值是一个没有 html 方法的 DOM 元素。使用 eq 方法代替它通过索引获取元素,但返回值是一个 jQuery 包装的对象:

voteSpans.eq(i).html(oldVotes+ parseInt(newVotes));

另请注意,dataset 属性并未得到广泛支持。考虑改用 jQuery .data() 方法。下面是一个使用 jQuery 方法的例子:

$(".votes").filter(function() {
return $(this).data('id') === receivedId;
}).text(function(_, oldVotes) {
return +oldVotes + parseInt(newVotes, 10);
});

关于javascript - 遍历所有跨度并使用 JQuery 更新一个字段,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34106575/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com