2011-02-01 7 views
1

Я хочу обработать событие, когда мой перетаскиваемый элемент был удален, но не внутри моего пункта. До сих пор я мог получить только далеко:jQuery draggable/droppable miss event

$('#myDraggable').draggable({ 
    stop: function (event, ui) { 
     if (event.srcElement.id != 'myDroppable'){ 
     // Missed 
     } 
    } 
}); 

Но проблема в том, что я чейнинга #myDroppable элемент, когда что-то добавляется к нему. Так что в следующий раз я что-то убью event.srcElement.id может не быть myDroppable, но любой id его новых детей. Я мог бы добавить наложение сверху, но когда есть полоса прокрутки, он становится более сложным. Есть ли другой способ справиться с этим событием?

ответ

0
if ($(event.srcElement).parents().andSelf().has("#myDroppable").length === 0) 

Возьмите элемент, захватить его вся родительская цепь добавить текущий элемент затем уменьшить его до заданного соответствия «#myDroppable». Если длина равна 0, то вы не отбрасываете ее в свой droppable.

Я не уверен, с этим плагином, но обычно this === event.srcElement

.parents.andSelf.has

+0

это странно, но 'event.srcElement' не может быть преобразован в объект JQuery, становится нулевым после' $ (event.srcElement) 'однако его тип' HTMLElementDiv' в моем случае. Также я искал более эффективный способ сделать это, проверка каждого элемента в контейнере не похожа на хорошее решение. –