【问题标题】:Add and remove div class to jquery array or json object when div is clicked单击 div 时向 jquery 数组或 json 对象添加和删除 div 类
【发布时间】:2013-03-20 05:35:14
【问题描述】:

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

【问题讨论】:

    标签: jquery arrays json class html


    【解决方案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

    【讨论】:

    • 我将此添加到我的小提琴中,但它删除了最后添加的类,而不是刚刚取消选择的类。当我去你的小提琴时,它和我原来的一样。
    • skinCare.splice(skinCare.indexOf(index), 1);也是错误的,应该是skinCare.splice(index, 1);
    • 它似乎在 jsfiddle 中工作,但是当我将代码复制到我的实时站点时,它不起作用?有任何想法吗? dev.chrisruno.com/sahshe/quiz
    • 你能做一个console.log(index, skinCare) 看看发生了什么
    • Uncaught Error: Syntax error, unrecognized expression: # jquery.min.js:4 st.error jquery.min.js:4 ft jquery.min.js:4 st jquery.min.js:4 b.fn.extend.find jquery.min.js:4 b.fn.b.init jquery.min.js:3 b jquery.min.js:3 (anonymous function) jquery.scrollTo.js:130 b.extend.each jquery.min.js:3 b.fn.b.each jquery.min.js:3 $.fn.scrollTo jquery.scrollTo.js:114 (anonymous function) myjs.js:10 b.event.dispatch jquery.min.js:3 v.handle jquery.min.js:3 Uncaught ReferenceError: index is not defined myjs.js:106 (anonymous function) myjs.js:106 b.event.dispatch jquery.min.js:3 v.handle
    【解决方案2】:

    这是关于函数添加类和函数之间的时间 评估“hasClass”,您必须评估数组上是否存在 insted if 有类...

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

    【讨论】:

      猜你喜欢
      • 2011-02-04
      • 1970-01-01
      • 2021-07-08
      • 2015-05-10
      • 2017-01-11
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多