在所有跨度上循环并更新一个失败的whit JQuery
Loop over all spans and update one failed whit JQuery
我的html代码中有几个跨度,我将更新其中一个。因此,我在每个跨度的属性data-id
中给每个跨度一个唯一的数字。span还有一个名为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);
});
我想知道为什么您只使用.each()
来循环使用.votes
类的所有跨度,而使用.text()
来表示跨度。不需要使用.html()
,而您的情况下的跨度没有html。
$('.votes').each(function(){
if($(this).attr('data-id') == receivedId){ //you can use $(this).data('id');
var oldVotes= parseInt($(this).text());
$(this).text(oldVotes + parseInt(newVotes));
}
});
请注意,您不必循环遍历所有它们来进行比较。您可以直接访问:
var voteSpan = $(".votes[data-id="+receivedId+"]");
相关文章:
- JavaScript到PHP的时间戳失败,增加了大约一个半月的时间
- 为什么一个空的200会在jQuery中创建一个失败
- 为什么我会得到一个“;auth失败”;使用正确的凭据连接到MongoDB时出错
- 当CDN加载失败时,为字体添加一个本地CSS回退
- $.getJSON 到一个带有 include_once 的 php 失败了,但它完成了工作
- jQuery验证另一个值失败
- 我用脚本创建了一个按钮.我可以通过点击按钮调用其他函数吗?我这样做,但失败了
- 当表单验证失败时,我将如何最好地处理下一个事件
- 用C#在Win 8.1 Chakra中执行JS的一个失败的最小例子
- 我正在用java脚本编写一个hangman程序,如果玩家失败了,我需要帮助来显示这个词
- 一个iframe随机失败到XHR
- 循环遍历所有字段,如果任何一个字段的验证失败jquery,则返回false
- Angular JS,把json放到ng重复出一个事件失败
- 量角器:失败:row.findElement 不是一个函数
- 如何将 $http.put 封装到一个函数中,该函数执行某些操作,然后返回通过或失败的承诺
- 如何同时运行两个承诺并在nodejs中一个接一个地失败
- jQuery: $.when 延迟的 AJAX 调用 — 一个失败的调用会取消其他调用
- 在所有跨度上循环并更新一个失败的whit JQuery
- MVC3控制器操作以编程方式返回一个失败的发布请求
- 如何制作一个失败的规格清单使用茉莉自定义记者发布到slack