jquery-ui droppable: запретить родителю принимать детей

Я создаю список документов, и мне нужно остановить прием перетаскиваемого элемента его родителем. Опция установлена ​​так:

$( ".onedoc" ).droppable({
accept: ".onedoc"
});

но я хочу, чтобы droppable не принимал своих непосредственных детей. Проблема в том, что это вложенный список, у родителей и детей одни и те же классы, поэтому мне нужно сделать что-то вроде

accept: $(".onedoc").not($(this).children())

но это, конечно, не работает.


person DMIL    schedule 18.06.2012    source источник


Ответы (1)


Может быть, потому что accept: ищет селектор, а вы предоставляете ему объект jQuery?

Как насчет того, чтобы предоставить ему функцию?

$(".onedoc").droppable({
    accept: function (elem) {
        // check elem here for being a child and return false
        return !$(this).has(elem).length;
    }
});
person U.P    schedule 18.06.2012
comment
Ошибка: Объект не поддерживает свойство или метод «имеет». Я должен был что-то изменить? Это немного не мое, я не знаю, как функция, возвращающая true/false, может помочь в этом случае. Мне нужно принять элементы .onedoc, за исключением тех, которые являются непосредственными дочерними элементами элемента, который в этом случае является удаляемым (чтобы пользователи не могли перетаскивать элемент или видеть hoverClass его родителя). - person DMIL; 18.06.2012