Jquery 每次删除项目时添加类?

Jquery 每次删除项目时添加类?,jquery,drag-and-drop,Jquery,Drag And Drop,感谢您提前查看此问题 我在大学里做的一个项目中使用jQuery拖放,我希望计算每一次拖放,并更改添加到每个拖放上的类 以下是jQuery: $('#droppableChoking').droppable({ drop: function (event, ui) { //reuse jQuery object var $this = $(this); //get object type var droppedObject

感谢您提前查看此问题

我在大学里做的一个项目中使用jQuery拖放,我希望计算每一次拖放,并更改添加到每个拖放上的类

以下是jQuery:

$('#droppableChoking').droppable({
    drop: function (event, ui) {
        //reuse jQuery object
        var $this = $(this);

        //get object type
        var droppedObject = ui.draggable.data('object');

        //css reset
        $this.removeClass();
        $this.addClass("grape" + droppedObject);
        }

        //play drop sound
        audioClap.play();
    }
});
我尝试过做一个循环,每次都将计数的值添加到类中以更改它,但我做错了什么

removeClass
要求从每个匹配元素的class属性中删除一个或多个以空格分隔的类

因此,考虑到这一点,您对removeClass的调用不太可能删除任何内容。如果要清除该类,请执行
$this.attr('class','')

至于计数器,这里是我更新的JS:

    var counter = 0;

    $('#droppableChoking').droppable({
            drop: function (event, ui) {
                ++counter;

                //reuse jQuery object
                var $this = $(this);
                //get object type
                var droppedObject = ui.draggable.data('object');
                //css reset
                $this.attr('class', '');
                $this.addClass("grape" + droppedObject);

                // what to do with counter?  not sure.  Whatever you want.  I'm setting text.  Not sure how you want to use it for the class.
                $this.text(counter);
                }
                //play drop sound
                audioClap.play();
            }
        });

试着这样做:

var drop_count = 0;

$('#droppableChoking').droppable({
    drop: function (event, ui) {
        //reuse jQuery object
        var $this = $(this);

        //get object type
        var droppedObject = ui.draggable.data('object');

        //css reset
        $this.removeClass();
        $this.addClass("grape_" + drop_count);
        drop_count++;

        //play drop sound
        audioClap.play();
    }
});

类名应该是什么样的?调用removeClass()时需要传递要删除的类。好吧,循环不会有帮助,除非你能以某种方式将用户放入循环中,如果你能做到这一点,JS是一种比我想象的要酷得多的语言……但是你保持计数器的想法是正确的。你只需要把计数器放在某个地方,比如一个全局变量,或者放在函数的闭包内。@Boundless
removeClass()
没有参数会删除所有类。在你的代码中,在
addClass
行之后有一个错误的闭包括号。你关于
removeClass()
的指令是错误的。请注意,在API中,传递给函数的参数在[]括号中
elem.removeClass([className])
。这意味着参数是可选的。不传递任何内容将导致删除所有类,正如OP所预期的那样。@ATOzTOA括号是我尝试执行循环时使用的,对不起。但上述方法是有效的。我试图让事情变得比实际情况更难。谢谢你,伊莱@idrumgood您是正确的+1。我以为没有任何参数removeClass就不能工作。