0

どちらもドロップ可能なネストされた div が 2 つあります。内部 div の内容に基づいて、accept プロパティを介して要素のドロップを許可するかどうかが決定されます。そうすることで、内側のドロッパブルでの重複を防ぎます。

問題は、内側の div 内で accept プロパティが false に設定されている場合、イベントが親にバブルされることです。親はドロップを受け入れますが、それはまさに私が望んでいないことです。複雑な要因の 1 つは、accept 関数の引数がドロップされたノードのみで構成されていることです。実際のイベント オブジェクトへの参照がないため、伝播を停止できません :(

したがって、大きな問題は、子の accept プロパティが false と評価された場合、親のドロップ可能オブジェクトへのイベントの伝播を防ぐことができるかということです。

コード:

$(node).droppable({
    tolerance: "intersect",
    accept: function(nodes) {
                    //if acceptPM evaluates to false the event is bubbled which I don't want
        return acceptPM(nodes);
    },
    greedy: true,
    activeClass: "ui-state-default",
    hoverClass: "ui-state-hover",
    drop: function(event, ui) {
        //do something          
    }
});
4

1 に答える 1

0

解決しました。

イベントの伝播を回避し、accept 関数を削除して、drop 関数にチェックを追加しました。アイテムがすでに存在する場合は何もせず、ドロップは元に戻されます:)

おそらく最もクリーンな方法ではありませんが、機能します。

後から考えるとかなり単純..

于 2012-12-15T13:46:51.087 に答える