是否可以在动态创建的元素中使用HTML5拖放?

时间:2014-11-17 22:25:38

标签: javascript jquery html5 drag-and-drop

编辑:我知道这看起来像一个重复的问题,但它非常特定于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拖动事件绑定到动态创建元素的成功案例,或者这是不可能的?谢谢!

1 个答案:

答案 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?');
});