我使用的是jQuery,我有以下问题:
在我的网站上,我有一个棋盘。每个正方形都是一个简单的div,其背景属性显示为白色或黑色。在这些方块上(在div内),我放置了一个img标记,以引用必须在该方块上的部分。类似于:
<div id="a8" class="square" style="background-image: url('/images/background_white.png')">
<img id="piece_a8" class="piece" src="/images/rook_black.png" />
</div>我可以用jQuery控制棋子的运动。每个piece-class img都是可拖的,每个square-class div都是可下拉式的。我已经有了一个服务器端函数,给定一组坐标,如果移动有效,则返回“有效”,如果不是这样,则返回“无效”。我的想法是,如果服务器返回“无效”,则必须返回到其原点,如果服务器返回“有效”,则必须保留在新的方框中,删除目标广场内的每个其他部分。
我的问题是,我不知道如何在我的jQuery代码中强制执行这个返回值。我尝试过将函数放入可拖放的revert属性中,以及在可下拉式的accept和drop函数中,但我还没有找到如何使$.get返回false或true。
任何帮助都会很感激的。
提前谢谢你,
莱斯特
发布于 2011-04-07 15:50:21
“不介意,”回答。
如果有人需要知道,诀窍有两部分:
First:在可拖放定义中的中,在start事件下添加一个保存原始位置的函数。如下所示:
$('item_to_drag').draggable({
start: function(){
$(this).data("origPosition",$(this).position());
}
});第二步:在可下垂定义中的中,在drop事件下,执行.get并使用一个函数来处理答案;如果您的条件不满足,则将拖放回到原来的位置。如下所示:
drop: function (event, ui) {
$.get(url,function(data) {
if (data == '"INVALIDO"')
{
ui.draggable.animate(ui.draggable.data("origPosition"),"slow");
}
else
{
//store new positions, whatever;
}
}
);
}那就行了。
部分答案来自于这里:In jQuery, how to revert a draggable on ajax call failure?。
https://stackoverflow.com/questions/5581288
复制相似问题