在我的文字游戏中,有一个包含3个字母单词的网格。
游戏的目的是通过点击侧面的相应字母来拼写单词。
当网格中的某个区域突出显示时,它会向用户显示要拼写的单词。用户单击网格侧面的字母,它们应移动到突出显示的区域。
我最近在下面一段代码中将“drop-box”更改为div,现在动画将字母带到网格的顶角,然后再将其放到正确的位置。
var row = '<tr>';
var spaceAvailInRow = numLetters;
while (spaceAvailInRow) {
var word = getWordToFitIn(spaceAvailInRow, unusedShuffledWords);
guesses[word] = [];
spaceAvailInRow -= word.length;
for (var k = 0; k < word.length; ++k) {
row += '<td data-letter="' + word[k] + '" data-word="' + word + '"><div class="drop-box"></div></td>';
}
}
row += '</tr>';
tbl.append(row);
}
$(".container").append(tbl);
有人能告诉我为什么动画现在已经破了我改变了吗?
答案 0 :(得分:1)
问题是position()
获取元素相对于其(偏移)父元素的位置 - 在您的情况下,每个drop-box
div位于0,0与其包含td
相对应。您需要的是包含td
的{{1}},而不是position()
。
我已经改变了一些东西,这里可以看到小提琴:http://jsfiddle.net/mHDkV/1/
我已更改drop-box
变量以引用父targetPos
的位置,并将td
类也应用于occupied
。看看jsFiddle中的代码 - 它应该有意义。