0

我有 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>

当用户单击 a 时,li我添加了一个名为的类on并将值推送到数组中,并在推送项目后对数组进行排序。

如果用户再次单击liI can't remove the value from the array,因为排序。有没有办法可以做到这一点?

我不知道做这方面的功能..任何人都可以帮助我吗?我尝试了拼接,但没有结果。

4

1 回答 1

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;
}

演示:http: //jsfiddle.net/codef0rmer/AEYtq/1/

于 2012-04-09T16:47:43.930 回答