0

基本上我想要做的是有一个 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/

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

这是前几天的帖子:在基于单击的 div 的 JQuery 数组中添加和删除值时遇到问题

4

2 回答 2

1

您的测试$('.skinCare').hasClass('selected')是错误的,因为它测试了带有 class 的第一个元素是否skinCare具有 class 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);
    }
});

演示:小提琴

于 2013-03-20T05:43:40.737 回答
0

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

>扎克·德夫

这有效:

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);
            }
        });
于 2013-03-21T19:54:23.877 回答