基本上我想做的是有一个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
答案 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);
}
});