原諒我的缺乏與jQuery UI的經驗,但是,我開發一個JavaScript 2玩家基於web的國際象棋引擎,並已決定擺脫點和點擊,並用去爲非移動用戶提供更多用戶友好的拖放功能。我遇到的問題很可能會對使用JQuery UI的人很明顯。我進入細節之前,這裏是一個看代碼:怪異的行爲與jQuery UI拖放
$(function(){
//piece is an img
$(".piece").mousedown(function() {
currentPieceLocation = ($(this).closest('div'));
currentPieceLocation = currentPieceLocation.attr('id');
});
$('.piece').draggable({
snap: ".square",
snapMode:"inner",
revert: true
});
//square is a div
$('.square').droppable({
greedy: true,
tolerance: 'fit',
accept: function(){
squareToMove = $(this).attr('id');
//returns true if square being dropped on is a valid move
return isValidMove(currentPieceLocation, squareToMove);
},
drop: function(event, ui) {
//appends img to the valid square/div
//this appends ok when I inspect the code
$(ui.draggable).appendTo($(event.target));
//updates internal board
//this works fine
makeMove(currentPieceLocation, squareToMove);
}
});
});
在堅果殼,我有64級div的(全部具有方形類)與IMG對div的內部件創建。我有招驗證(isValidMove()正常工作),但是,當我去移動棋子到下一個前廣場,典當要跳起來,而不是兩個平方沒問題。沒有它與第一個棋子移動無關。爲了測試目的,我禁用了它。現在什麼有趣的是,因爲我設置恢復爲「真」,而不是「無效的」,之後我把典當,典當試圖拉昇到什麼是前面的第二方,然後滑回,我最初把它丟,因此應該在哪裏。顯然這可能是由於追加發生。如果我將回復變爲「無效」,那麼棋子就會跳到前面的第二個方格,並在我放下後停留在那裏。儘管我可以將Revert設置爲「true」,但顯然我們不希望看到棋子嘗試並滑動,然後移回原來的位置。
我有一種感覺,問題是因爲每個div都有一個方形的類,當我點擊一塊來移動塊/ img時,isValidMove()被稱爲由於開始位置div有一個方形類。我猜這可能是某種方式增加額外的舉動沒有我意識到這一點......我的印象是,isValidMove()將被稱爲只有當我「DROP」 /當我釋放一個投擲的方形鼠標按鈕,而不是隻需點擊包含類廣場的div內的img即可。正如我所說的,我沒有使用JQuery UI的經驗,所以我顯然有一些想法瞭解可拖動和可拖動是如何協同工作的。我已經看到類似的問題,但是,沒有一個是完全相同的。任何幫助將是偉大的!
請不要寫一篇作文。 –
我們可以玩的演示將會走很長的路 - 更容易理解正在發生的事情以及調試的能力。如果您可以使用單件重現問題,則可能不需要包括整個棋盤(以及驗證和碎片等)。 – xec
現在嘗試將一個棋子移動到另一個棋子上,其後面有一個空白空間。它跳過3個空格,然後移回到另一個棋子後面的空白區域! – Sumurai8