2014-11-17 2 views
6

Редактировать: Я знаю, что это похоже на дублированный вопрос, но это очень специфично для событий перетаскивания HTML5. У меня нет проблем с добавлением в событиях jQuery, просто функции перетаскивания HTML5.Можно ли использовать перетаскивание HTML5 в динамически созданных элементах?

Я использовал базовый jQuery несколько раз, чтобы добавить функциональность перетаскивания на страницу, но я бы хотел использовать новую функцию перетаскивания HTML5 для моего текущего проекта. Drag отлично работает для любого элемента, который я включаю в HTML, но, похоже, я не могу динамически добавлять элементы и перетаскивать их. Я подозреваю, что это связано с тем, что все перетаскиваемые прослушиватели событий связаны при загрузке страницы, прежде чем мои новые элементы будут созданы. Кто-нибудь повезло с использованием HTML5, чтобы динамически добавленные элементы перетаскивались? Или есть способ повторно связать прослушиватели событий без перезагрузки страницы?

Использование .bind() с любым из событий перетаскивания HTML5, похоже, не работает. то есть,

$(newElement).bind('drag', function(e){ 
    console.log('do you even drag, bro?'); 
}); 

никогда не будет стрелять, хотя .bind() с событием нажмите отлично работает. Я предполагаю, что это потому, что «drag» ничего не значит для jQuery. Кстати, я добавляю HTML-тег draggable="true" в новый элемент.

Итак, у кого есть истории успеха для привязки событий перетаскивания HTML5 к динамически созданным элементам, или это невозможно? Благодаря!

+0

Вы должны использовать делегирование событий или добавить обработчики событий после того, как новые элементы были добавлены –

+0

@ Juhana Это подобный вопрос, но я уже использую '.На()' связывания, который работает отлично подходит для События jQuery. Проблема в том, что я пытаюсь достичь этого с помощью HTML5 перетаскиваемых событий. Я попытаюсь немного уточнить свой вопрос. Благодаря! – Tesslacoiled

+0

@patrickEvans, я думаю, этот вопрос был отмечен как дубликат по ошибке. Не могли бы вы или Юхану рассмотреть возможность повторного открытия? Мне не удалось найти информацию, связанную с привязкой событий перетаскивания HTML5 в другом месте. Благодаря! – Tesslacoiled

ответ

7

Есть два способа добиться этого. Первый заключается в использовании какого-то предок элемента, который будет существовать в то время привязки() называется:

$('.someParent').on('drag', '.newElement', function(){ 
    console.log('do you even drag, bro?'); 
}); 

вторым является структурирование вашего кода таким образом, что ваша функция привязки вызывается после того, как ваш newElement будет создаваться:

var $newElement = $('<div class="newElement"></div>'); 

$newElement.on('drag', function(e){ 
    console.log('do you even drag, bro?'); 
}); 
Смежные вопросы