Jquery如何改组数组值?什么时候toggleClass?

时间:2012-04-09 15:44:39

标签: jquery

我有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,由于排序,我无法从数组中删除该值。有没有办法实现这个目标?

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

1 个答案:

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

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