Закажите элементы jQuery, которые должны быть сброшены последним - PullRequest
0 голосов
/ 22 июля 2011

Я немного искал и не мог найти ответ на этот вопрос, а также немного возился с кодом, но безрезультатно.У меня есть стандартная jQuery UI dragable и droppable установка, которая работает.

Однако, когда элементы (в данном случае ботинки) перетаскиваются в область цели, которую можно опустить, они добавляются, поэтому старые элементы остаются впереди, а новые элементы добавляются в конец и выталкиваются из поля зрения.

Есть ли способ, чтобы сортируемые предметы были добавлены к моей цели, а не добавлены?

Редактировать **

var proto = $.ui.droppable.prototype;

proto._create = function() {

    console.log('Calling the create method');

    var o = this.options, accept = o.accept;
    this.isover = 0; this.isout = 1;

    this.accept = $.isFunction(accept) ? accept : function(d) {
    return d.is(accept);
    };

    //Store the droppable's proportions
    this.proportions = { width: this.element[0].offsetWidth, height: this.element[0].offsetHeight };

    // Add the reference and positions to the manager
    $.ui.ddmanager.droppables[o.scope] = $.ui.ddmanager.droppables[o.scope] || [];
    $.ui.ddmanager.droppables[o.scope].unshift(this);

    (o.addClasses && this.element.addClass("ui-droppable"));
};

1 Ответ

2 голосов
/ 22 июля 2011

Да, хотя это довольно сложно. Вам нужно будет расширить объект JQueryUI ui.droppable, изменив функцию _create. В настоящее время он использует push для добавления вашего нового элемента в конец массива, например:

$.ui.ddmanager.droppables[o.scope].push(this);

Вы захотите использовать unshift:

$.ui.ddmanager.droppables[o.scope].unshift(this);

Источник JQuery: https://github.com/jquery/jquery-ui/blob/master/ui/jquery.ui.droppable.js

JavaScript unshift() документация: http://www.w3schools.com/jsref/jsref_unshift.asp

Учебник по расширению виджетов JQueryUI: http://bililite.com/blog/extending-jquery-ui-widgets/

...