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_dra#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 に答える