مسج:كيفية إيقاف مساعد من يتم إزالتها إذا لم يكن بنجاح انخفض
-
03-07-2019 - |
سؤال
لدي 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() );
}
}
هذا النهج لا تخسر جميلة الرسوم المتحركة ، ولكن قد يكون من المفيد أن تقوم أنت أو شخص آخر في هذه المسألة.