我有5个li
元素,当我点击每个元素时,我会添加一个类名on
并将其推入数组中。我想在用户再次点击时从对象中删除该项目。
<ul>
<li class="on" data-index="3">add 3</li>
<li data-index="4">add 4</li>
<li data-index="5">add 5</li>
<li class="on" data-index="6">add 6</li>
</ul>
当用户点击li
时,我添加了一个名为on
的类,并将值推入数组并在推送项目后对数组进行排序。
如果用户再次点击li
,由于排序,我无法从数组中删除该值。有没有办法实现这个目标?
我不知道有关这方面的功能......任何人都可以帮助我吗?我试过拼接,但没有结果。
答案 0 :(得分:1)
您可以使用delete arr[index]
语法从数组中删除任何元素。
试试这个:
var arr = {};
$('ul > li').click(function () {
$(this).toggleClass('on');
if ($(this).hasClass('on')) {
arr[$(this).attr('data-index')] = $(this).html();
} else {
delete arr[$(this).attr('data-index')];
}
console.log(sortObj(arr));
});
function sortObj(arr){
var sortedKeys = new Array();
var sortedObj = {};
for (var i in arr){
sortedKeys.push(i);
}
sortedKeys.sort();
for (var i in sortedKeys){
sortedObj[sortedKeys[i]] = arr[sortedKeys[i]];
}
return sortedObj;
}