مسج:كيفية إيقاف مساعد من يتم إزالتها إذا لم يكن بنجاح انخفض

StackOverflow https://stackoverflow.com/questions/208647

سؤال

لدي draggable مع العرف helper.في بعض الأحيان المساعد هو استنساخ و في بعض الأحيان هو العنصر الأصلي.

المشكلة هي أنه عندما مساعد هو العنصر الأصلي و هو لا انخفض صالح droppable فإنه يحصل على إزالتها.الحل يبدو مثل هذا حتى الآن:

في بلدي on_dropped أنا وضعت رد ui.helper.dropped_on_droppable إلى true;

في stop رد من قابل للسحب انا التحقق من أن المتغير ثم ...ماذا علي أن أفعل ؟

$('.my_draggable').draggable({
    stop   : function(e, ui) {
        if (!ui.helper.dropped_on_droppable) {
            /* what do I do here? */
        }
    },

هل هذا هو المنهج الصحيح ؟

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

المحلول

حسنا, لقد وجدت الحل!انها قبيحة و يكسر قواعد من التغليف ، ' ولكن على الأقل فإنه لا وظيفة.

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

element.draggable({
    stop   : function(e, ui) {
        /* "dropped_on_droppable" is custom and set in my custom drop method
           ".moved_draggable" is custom and set in my custom drag method, 
                     to differentiate between the two types of draggables
        */               
        if (!ui.helper.dropped_on_droppable & ui.helper.hasClass('moved_draggable')) {
            /* this is the big hack that breaks encapsulation */
            $.ui.ddmanager.current.cancelHelperRemoval = true;
        }
    },

تحذير:هذه فواصل التغليف و قد لا يكون متوافق الأمام

نصائح أخرى

قد يكون في عداد المفقودين شيء هنا ولكن هو ليس مجرد حالة من إضافة

revert: "invalid"

أن الخيارات القابلة للسحب إذا كان قابل للسحب هو من الأصلي عنصر ، وليس مستنسخ ؟

يمكنني استخدام مخصص مساعد أن مجاميع متعددة-اختيار draggables في شعبة واحدة.هذا لا يبدو أن رقص الجاز مع العودة وظائف لذا جاء مع هذا المخطط.العناصر يدويا إلحاق العودة إلى الأصل الأم التي لا تتبع طريق .البيانات().

.draggable({
    helper: function() {
        var div = $(document.createElement('div'))
            .data('lastParent', $(this).parent());
        return div;
    },
    start: function() {
        //... add multiple selection items to the helper..          
    },
    stop: function(event,ui) {
        $( $(ui.helper).data('lastParent') ).append( $(ui.helper).children() );
    }
}

هذا النهج لا تخسر جميلة الرسوم المتحركة ، ولكن قد يكون من المفيد أن تقوم أنت أو شخص آخر في هذه المسألة.

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