为什么droppable和draggable的jQuery没有按预期工作?

时间:2016-06-09 05:12:14

标签: javascript jquery html css jquery-ui

有人能告诉我为什么第二个if语句条件得到满足。

这是代码

$("#car").draggable({
    start: function(event, ui) {
        if (!done) return false;
    },
    stop: function(event, ui) {
        if (counter >= 40 && $(".correct").length == $(".drop").length) {
            setTimeout(function() {
                $('#win').text(winner +' '+ 'stars' + ' ' + 'earned' + ' Completion time' + ' ' + counter + ' seconds');
            }
        }
    }
});

// for droppable...
$("#carDrop").droppable({
    accept: "#car",
    drop: function(event, ui) {
        if(ui.draggable.is("#car")){
            $(this).addClass("correct");

            ui.draggable.fadeOut(500);
            $(this).fadeOut(500,function(){

            });
        }
    }
});

我使用提醒框检查了.correct.drop的长度,.correct的长度为8,.drop的长度为5.但是当我拖动时图像并删除它然后第二个if语句工作,它没有意义。 Here is fiddle。它没有在小提琴中起作用。我认为小提琴中的框架存在问题。

2 个答案:

答案 0 :(得分:0)

在可放置的stop事件之前,可以解除可拖动的drop事件吗?这可以解释为什么没有.correct类导致该语句被评估为未定义的' ==' undefined'因此true

答案 1 :(得分:0)

尝试将第二个条件包装在括号中的if语句中,如下所示:

if (counter >= 40 && ($(".correct").length == $(".drop").length)) {

这是因为$([selector]).length实际上是true