jQuery计算类中的元素

时间:2014-02-08 20:24:06

标签: jquery jquery-ui

当你把一个字母放入这个jsfiddle的灰色框中时,有人可以解释为什么alert($('.letter').length);会返回(4)吗?

Fiddle

$(function () {
    $('.drag').draggable({
        cursor: 'move',
        revert: 'invalid',
        helper: 'clone',
    });
    $('.droppable').droppable({
        hoverClass: "ui-state-hover",
        accept: function (event, ui) {
            return true;
        },
        drop: function (event, ui) {
            var correct = 0;
            var dropId = $(this).attr('id');
            var letterId = $(ui.draggable).attr('id');
            var letId = dropId.substring(0, 1);
            var count = $(this).children().length;

            if (count < 1) {
                if (letterId == dropId) {
                    $(this)
                        .addClass("correct");
                    $(this).append(ui.draggable);
                } else {
                    $(this)
                        .addClass('wrong');
                    $(this).append(ui.draggable);
                }
            }
            $('.droppable').each(function () {
                var letId = $(this).children().attr('id');
                var dropId = $(this).attr('id');

                if (letId === undefined) {
                    $(this).removeClass('correct');
                    $(this).removeClass('wrong');
                }
                if (letId == dropId) {
                    correct++;
                }
            });
            alert($('.letter').length);
        }
    });
});

如果你把第二个字母放到第二个方框中,你仍然会得到4,所以我不会看到附加做任何事情。

1 个答案:

答案 0 :(得分:3)

当时页面上有一个使用.letter类的克隆助手,因此该页面上所有元素的长度为4.

我已经更新了小提示,以警告最后一个元素的class,这是辅助类(您可以通过附加到元素的dragging类来判断。)

Fiddle

要获得除助手之外的所有字母的计数,请尝试使用此选择器:

$('.letter:not(".ui-draggable-dragging")');

由于帮助程序是被拖动的对象,因此JQuery-ui会为其添加一个dragging类,您可以键入该类。

Fiddle with updated count