我正在尝试使用jQuery UI将项目从一个区域移动到另一个区域。当一个方框从左侧区域移动并掉入黄色区域时,我会计算剩余时间并显示进度条。
出于某种原因,第一次阻力计算但不是以下 - 为什么?
我尝试使用length
计算:
$("#launchPad .card").length;
答案 0 :(得分:2)
$("#launchPad .card").length
计算div.card
内的所有td#launchPad
,因此初始数字为5.但是当您拖动div.card
时,您只会更改元素的位置但仍然是在#launchPad
内,所以你的本地变量currentCount
也是5。
您可以添加一个类来标识drop
事件中已删除的对象。你可以尝试这样的事情:
$("#dropZone").bind( "drop", function(event, ui) {
$(ui.draggable).addClass('dropped');
var currentCount = $("#launchPad .card:not(.dropped)").length;
修改强>
我的意思是你的#launchPad
中有下一个DOM:
<td id="launchPad" class="ui-droppable">
<div id="CARD2674" class="card ui-draggable" style="position: relative; ">Task 2</div>
<div id="CARD2677" class="card ui-draggable" style="position: relative; ">Task 5</div>
<div id="CARD2675" class="card ui-draggable" style="position: relative; ">Task 3</div>
<div id="CARD2673" class="card ui-draggable" style="position: relative; ">Task 1</div>
<div id="CARD2676" class="card ui-draggable" style="position: relative; ">Task 4</div>
</td>
然后,对于jQuery,您的div.card
始终位于#launchPad
内,因此$("#launchPad .card").length
始终返回5.
我放了demo。
答案 1 :(得分:1)
我相信这段代码是个问题:
$.ajax({
url: "uxowBCc",
type: "POST",
data : "saveCard=33&idCard="+idCard+"&x="+x+"&y="+y,
dataType: "script",
success: function(data){
eval( data);
}
});
期待JavaScript作为响应,但正在获取页面的HTML结构。
这是存储在data
变量中的内容:
<!-- It seems like you have a couple lines of nothing up here that shouldn't be -->
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<link rel="stylesheet" type="text/css" href="/css/style.css">
<link rel="stylesheet" type="text/css" href="/css/testStyle.css">
<link rel="STYLESHEET" type="text/css" href="/jq/UI/css/blitzer/uimin.css">
<script type="text/javascript" src="/jq/jquery-1.5.1.min.js"></script>
<script type="text/javascript" src="/jq/jquery-ui.min.js"></script>console.info("id: 299");console.info("2674 299 43 53");
</body>
</html>
答案 2 :(得分:1)
这是因为当拖动#launchpad .card
项时,它仅在其他表格单元格中明显可见,而在其他表格单元格中则不是物理上(就DOM而言)。注意第227行
var currentCount = $("#launchPad .card").length;
这将始终为5,因为节点永远不会移动。它是第一次工作,因为你认为转移是成功的,只是递减这个数字给你4或20%。
一种可能的解决方案是在移动后从#launchpad中删除节点并将其附加到#launchpad之外的另一个节点,或者可以将类添加到移动的节点并将上述代码更改为
var currentCount = $("#launchPad .card:not(.moved)").length;