当你把一个字母放入这个jsfiddle的灰色框中时,有人可以解释为什么alert($('.letter').length);
会返回(4)吗?
$(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,所以我不会看到附加做任何事情。
答案 0 :(得分:3)
当时页面上有一个使用.letter
类的克隆助手,因此该页面上所有元素的长度为4.
我已经更新了小提示,以警告最后一个元素的class
,这是辅助类(您可以通过附加到元素的dragging
类来判断。)
要获得除助手之外的所有字母的计数,请尝试使用此选择器:
$('.letter:not(".ui-draggable-dragging")');
由于帮助程序是被拖动的对象,因此JQuery-ui会为其添加一个dragging
类,您可以键入该类。