0

我试图drop仅在所有内容都被删除的情况下触发一个事件draggables

drop: function(event,ui){
            var dropd = "#"+ui.draggable.attr("id");
            if("#a_dra" && "#b_dra" && "#c_dra" && "#d_dra" == dropd){
                $("#whistle").get(0).play();
                dfd.resolve();
            };  
        },

这样code就有问题了。它在每个都div被丢弃并正确触发时起作用。除非我只删除#a_draand #d_dra,否则它也会触发,这是不可取的,因为我需要它是随机的。

我在那里缺少什么?

提前致谢!:)

4

1 回答 1

4
if("#a_dra" && "#b_dra" && "#c_dra" && "#d_dra" == dropd){

上面这行实际上意味着

if(("#a_dra" == true) && ("#b_dra" == true) && ("#c_dra" == true) && ("#d_dra" == dropd)) {

您不能像这样对多个值进行速记比较。

您可以为每个被丢弃的可拖动对象保留状态,以便检查它们是否都已被丢弃,以便解决您的延迟问题:

var dropped = {}

....

drop: function(event,ui){
    var dropd = "#"+ui.draggable.attr("id");
    dropped[dropd] = true;
    if(dropped["#a_dra"] && dropped["#b_dra"] && dropped["#c_dra"] && dropped["#d_dra"]){
        $("#whistle").get(0).play();
        dfd.resolve();
    };  
},
于 2012-10-28T19:10:36.033 回答