سؤال

هل هناك أي طريقة يمكنني الحصول مسج لأداء وظيفة عند سحب عنصر خارج DIV droppable؟

ودعونا نقول أن لدينا العناصر القابلة للسحب أو للفرز في شعبة وتريد منها حذف إذا يتم إسقاط هم خارج شعبة الأم.

وأعرف أن هناك حالة "الخروج" ولكن الذي يعمل بمجرد سحب العنصر خارج شعبة، وليس عندما كنت تسقطها (زر تحرير الماوس).

هل كانت مفيدة؟

المحلول

وأخيرا حصلت على الحل المناسب لهذا، على الرغم من أنها قليلا "hacky" كذلك. ما أقوم به هو أنا وضعت شعبة المقدمة مع draggables كما droppable، ولكن استخدام dropover والتسرب من الميزات لتحديد ما إذا كان هذا البند هو خارج شعبة المقدمة. عندما يكون خارج شعبة، وربط الحدث MouseUp للقيام بهذه الوظيفة الهبوط. عندما عاد في I توثيق الحدث MouseUp لذلك لا اطلاق النار.

ولأنه عندما سحب أنا عقد بالفعل على زر الماوس لأسفل، والإفراج عن أنه هو نفسه كما اسقاط ما لدي في بلدي "اليد".

$("#foregroundDiv").droppable({
        accept: ".draggableThingy",
        tolerance: "pointer",       
        out: function(event, ui) {
            $(ui.helper).mouseup(function() {
                doSomethingTo(ui.draggable);
            });
        },
        over: function(event, ui) {
            $(ui.helper).unbind("mouseup");
        }
    });

نصائح أخرى

لماذا لا ملفوفة جميع العناصر مع شعبة droppable آخر، ثم القيام فحص هناك؟

وماذا عن إذا انخفض المستخدم إلى خارج نافذة المتصفح؟ هل نعتبر هذا أيضا؟

وحل هذه بطريقة "hacky" جميلة: قدم جدول مع شعبة المحتوى في مركز وجعل كل الخلايا الأخرى من الجدول droppable. أساسا هذا يعني أنك يمكن إسقاط خارج شعبة مركز دون مشاكل، لكنه لا يزال بعيدا عن وسيلة جيدة للقيام بذلك.

إذا شخص ما لديه طريقة أفضل، من فضلك قل لي.

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top