在arr.splice()之后更新变量
Update variables after arr.splice()
我有一个数组,用来填充div,并根据它们在数组中的位置为它们的ID分配数字。
我可以使用.splice()
删除一个节,但在删除元素后,元素上的ID保持不变(这会影响我如何删除同一数组中的后续项),直到刷新页面。
例如,它最初是
<div id="favorites-1"></div>
<div id="favorites-2"></div>
<div id="favorites-3"></div>
当我移除其中一个div,比如<div id="favorites-1"></div>
时,我希望<div id="favorites-2"></div>
现在成为新的<div id="favorites-1"></div>
,而收藏夹3变成收藏夹2。
如果我从右到左删除元素,它就起作用了。如果我从左到右移除元素,那么实际上只有第一个元素被移除。
如何使用JavaScript或jQuery根据身份证号码的位置更新身份证号码?
//splice the array
arr.splice(x,y,replacements)
//iterate from the first modified item in the list and set the correct ID
for(var i=x; i<arr.length; i++) {
arr[i].id = "favorites-"+i;
}
是手动方式。
但如果你想做很多这样的事情,我建议你使用Knockout.js或类似的库。使用knockout,您将有一个可观察的项数组,可以向其中添加项,并且可以自动将id映射到元素的索引。例如,它可能看起来像这样。
<!-- ko foreach: myItems -->
<div data-bind="attr:{id:'favorites-'+$index"></div>
<!-- /ko -->
您也可以使用其他库(如AngularJS或EmberJS)来实现这一点,但knockout是一个专注于将数据模型绑定到DOM的特定问题的库。
您可以使用delete
实现稀疏阵列(这样您就不需要更改元素的ID):
var a = [0,1,2,3];
delete a[1]; // Key "1" was deleted
洞穴
即使没有1
密钥,数组的长度仍将为4
。如果根据长度循环数组,则会得到a[1]
的undefined
。如果使用for..in
进行迭代,则会从关键字"0"
跳到"2"
,但这可能会导致其他问题。。。
相关文章:
- Bookshelf.js,在fetchAll()方法之后更新
- jQuery Slider/Carousel 在 DOM 之后更新内容
- 在arr.splice()之后更新变量
- 我需要一些关于PHP的帮助,并在“?”之后更新URL
- 在 jQuery UI Sortable 之后更新 CollectionView 内容的最佳方式
- 在成功调用ajax之后更新引导popover的内容
- 在“ac change”之后更新“acute.select”列表
- 在jquery.load()之后更新dom
- 如何在不刷新页面的情况下在AjaxCall之后更新HighSlide内容
- $http之后更新多个控制器中的作用域
- 在每一步/单击之后更新引导程序日期时间选择器
- 指令不会在父作用域的$http response之后更新作用域
- Angular 2:在valueChanges之后更新FormControl验证器
- 在使用jquery或ajax更新表之后更新输入表单
- 如何让Angular在ajax get之后更新集合
- 内容可编辑分区-在.html()之后更新光标位置
- 如何在jQuery .load()之后更新DOM
- 如何在一个很长的HTTP请求之后更新DOM,而不用在Angular中使用$scope
- AngularJS如何在事件监听器之后更新视图/作用域
- 在持久性烬之后更新dom