单击div时,将div类添加到jquery数组或json对象中

时间:2013-03-20 05:35:14

标签: jquery arrays json class html

基本上我想做的是有一个div,一旦点击,子类的类被添加到JQuery数组甚至是JSON对象。再次单击div后,我希望从数组中删除该类。必须能够“选择”并取消选择多个div。

我成功地将一个子类或id添加到数组中,如下所示:

var skinCare=[];
    $('.skinCare').click(function(){
        var value = event.target.className.split(" ")[0];
        var index = skinCare.indexOf(value); 
        if($('.skinCare').hasClass('selected')){
            //$('.skinCare').removeClass('selected');
            skinCare.splice(skinCare.indexOf(index), 1);
        }

但是我无法将其从阵列中删除:

else if($.inArray(value, skinCare) == -1){

            skinCare.push(value);
        }
    });

这是我制作的一个jsfiddle,显示了我的意思: http://jsfiddle.net/bzYCm/

顺便说一句,这是我一两天前遇到的问题的更新。这个问题仍未得到解决,所以我重新设计了我所拥有的东西,我想我现在更好地提出这个问题了。

以下是其他日期的帖子:Having an issue with adding and deleting values in a JQuery array based upon clicked divs

2 个答案:

答案 0 :(得分:1)

您的测试$('.skinCare').hasClass('selected')错误,因为它会测试类skinCare的第一个元素是否具有类selected。相反,您需要测试点击的元素是否具有类selected,它由$(this).hasClass('selected')完成。

var skinCare=[];
$('.skinCare').click(function(){
    var value = event.target.className.split(" ")[0];
    var index = skinCare.indexOf(value); 
    if($(this).hasClass('selected')){
        //$('.skinCare').removeClass('selected');
        skinCare.splice(index, 1);
    } else if($.inArray(value, skinCare) == -1){
        skinCare.push(value);
    }
});

演示:Fiddle

答案 1 :(得分:0)

  

它是关于函数添加类和函数之间的时间   评估“hasClass”时,必须评估数组是否存在   如果有班级的话...... ...

     

> Zach Dev

这有效:

var skinCare = [];
        $('.skinCare').click(function(){
            var value = event.target.className.split(" ")[0];
            var index = skinCare.indexOf(value); 
            if(index >= 0){
                skinCare.splice(index, 1);
            } else if($.inArray(value, skinCare) == -1){
                skinCare.push(value);
            }
        });