4

Были заданы вопросы по этому вопросу, но ответы разные, несколько устарели и не работают для меня, поэтому я надеюсь, что это вопрос измененных правил синтаксиса в jQuery, что Я скучаю.Запуск события капли с помощью jQuery droppables

Сценарий HTML:

<div id="theDroppable">Droppable</div> 
<div id="theDraggable">Draggable</div> 
<div id="theTrigger">Click to trigger a drop</div> 

JQuery:

$("#theDroppable") 
    .droppable({ 
     drop: function(event, ui) { 
      alert('dropped'); 
     } 
    }); 

$("#theDraggable").draggable({}); 

$("#theTrigger").click(function(){$("#theDroppable").trigger('drop')}); 

скрипка: http://jsfiddle.net/7Bewj/

выше создает Droppable, перетаскиваемое, и DIV, что я хотел чтобы каким-то образом вызвать функцию, связанную с событием drop на droppable.

Перетаскиваемый режим отлично работает, перетаскивая его в раскрывающееся и отпускающее триггеры предупреждения.

Вопрос в том, как я могу инициировать тот же процесс, не используя фактическое перетаскивание ... или, по крайней мере, без использования перетаскиваемого, которое выпадает сверху (например, путем нажатия на третий div)?

+0

http://stackoverflow.com/a/29284621/278405?programmatically-drag-and-drop-element-onto-another-element – cychoi

ответ

4

Как видно из функции:

drop: function(event, ui) { 
     alert('dropped'); 
    } 

Если определить такие методы, как DROP во время провозглашения Droppable тогда они называются только тогда, когда DOM элемент (объект UI) падает на них, следовательно, вам не может вызвать эту функцию.

Если вам нужно вызвать DROP, то я хотел бы предложить вам связать это событие к Droppable как:

$("#theDroppable").droppable({hoverClass : 'droppableStyle'}); 
$("#theDroppable").on('drop',function(event,ui){ 
    alert('dropped'); 
}); 

Функция DROP теперь может быть вызвана падением 2-й DIV или нажав 3rd DIV, как в вашем дело. Trigger вручную с помощью:

$("#theDroppable").trigger('drop'); 

ПРИМЕЧАНИЕ: Аргумент «щ» будет неопределенным, если запускается вручную, в противном случае он будет содержать объект UI, когда перетаскиваемым падает на него.

Вот jsFiddle

+0

Благодарим Вас за это! Я видел синтаксис 'trigger ('drop')' довольно немного, но не мог заставить его работать. По-видимому, вы можете запускать событие drop только в том случае, если оно привязано к droppable, а не к параметру? –

+1

@DA. Да, если он задан как параметр, тогда ему нужен объект интерфейса, поэтому вам нужно отбросить элемент DOM, чтобы вызвать такие функции. И из этого http://api.jquery.com/trigger/ ясно, что события могут запускаться только при наличии привязки с использованием метода '.on'. – MrNobody

Смежные вопросы