2011-06-09 136 views
2

我有一个页面,用户必须从屏幕上其他位置的某个区域拖动项目。对剩余项目进行计数以计算百分比

当所有项目都被拖出 - 完成100%的任务。

我想计算每次拖放操作(当某个项目被拖出灰色区域时)完成的任务的百分比。

如何计算一个区域内的剩余物品?

如何转换为百分比?

我应该计算每个项目的价值在页面加载的百分比,然后减去?

+0

“对不起,看来你已经参加了本次可用性测试。” - 这么多回去评估代码... – Niklas 2011-06-09 20:49:10

+0

哈哈同样在这里。 – Andy 2011-06-09 20:55:25

+0

哎呀,对不起。测试了一些东西并且意外地离开了。请再试一次。 – santa 2011-06-09 21:02:29

回答

1

基于克里斯五月的评论,试试这个:

var startCount = $("#launchPad .card").length; 

$(".stack").bind("drop", function(event, ui) { 
    var currentCount = startCount - $("#launchPad .card").length + 1; 
    alert(currentCount/startCount * 100 + "%"); 
}); 

这因为从0%的首次下降至100%

小提琴从这里开始:http://jsfiddle.net/qQdZy/

编辑: 这应该解决问题:)

var startCount = $("#launchPad .card").length; 

$(".stack").bind("drop", function(event, ui) { 
    var currentCount = startCount - $("#launchPad .card").length; 
    if (currentCount != startCount) 
     currentCount++; 
    alert(currentCount/startCount * 100 + "%"); 
}); 

新小提琴:http://jsfiddle.net/qQdZy/1/

新的编辑: 好吧,我已经改变了我的解决方案。在这里它的工作原理:

var startCount = $("#launchPad .card").length; 
var moveFromLaunch = false; 

$(".card").bind("dragstart", function(event, ui) { 
    moveFromLaunch = true; 
}); 

$(".stack").bind("drop", function(event, ui) { 
    var currentCount = $("#launchPad .card").length; 
    if (moveFromLaunch) 
     currentCount--; 
    currentCount = startCount - currentCount; 
    moveFromLaunch = false; 
    alert(currentCount/startCount * 100 + "%"); 
}); 

小提琴:http://jsfiddle.net/qQdZy/3/

+0

这太棒了!我想你明白了。 – santa 2011-06-15 20:44:33

+0

只是注意到了一些东西......当我达到100%,然后从一个盒子拖到另一个盒子时,我获得了100%+ 1的增量。一旦达到它,我需要将其限制在100%。我怎么做? – santa 2011-06-16 00:17:56

+0

@santa我编辑了我的答案;) – 2011-06-16 09:09:52

2

像这样的东西应该工作。

$(document).ready(function(){ 
    var startCount = $('#launchPad .card').length, 


    $("#dropZone").bind("drop", function(event, ui) { 
     var currentCount = $('#launchPad .card').length; 
     alert(currentCount/startCount); 
    }); 

}); 
+1

丢弃事件触发Droppables(“框”),而不是Draggables(“卡”)。 – 2011-06-09 21:13:16

+0

酷!在PHP中,我可以通过doo floor或ceil来取得结果,这样的事情可以在jQuery中完成吗?我不想处理小数...... – santa 2011-06-09 21:15:33

+1

Math.floor(x)Math.ceil(x) – 2011-06-09 22:05:31