编辑:我知道这看起来像一个重复的问题,但它非常特定于HTML5拖动事件。我在添加jQuery事件时没有问题,只是HTML5拖放功能。
我已经多次使用基本的jQuery来为页面添加拖放功能,但我想为我当前的项目使用新的HTML5拖放功能。拖动适用于我在HTML中包含的任何元素,但我似乎无法动态添加元素并使它们可拖动。我怀疑这是因为在创建新元素之前,在加载页面时绑定了所有可拖动的事件侦听器。有没有人有运气使用HTML5来动态添加元素可拖动?或者有没有办法重新绑定事件监听器而无需重新加载页面?
将.bind()
与任何HTML5拖动事件一起使用似乎不起作用。即,
$(newElement).bind('drag', function(e){
console.log('do you even drag, bro?');
});
不会触发,但.bind()
点击事件可以正常工作。我猜这是因为“拖”对jQuery没什么意义。顺便说一句,我在新元素中包含draggable="true"
HTML标记。
所以,任何人都有将HTML5拖动事件绑定到动态创建元素的成功案例,或者这是不可能的?谢谢!
答案 0 :(得分:7)
有两种方法可以实现这一目标。第一种是使用在调用bind()时存在的某种祖先元素:
$('.someParent').on('drag', '.newElement', function(){
console.log('do you even drag, bro?');
});
第二种是构建代码,以便在创建newElement后调用bind函数:
var $newElement = $('<div class="newElement"></div>');
$newElement.on('drag', function(e){
console.log('do you even drag, bro?');
});