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

标签 javascript jquery html drag-and-drop

编辑:我知道这看起来像是一个重复的问题,但它非常特定于 HTML5 拖动事件。我在添加 jQuery 事件时没有问题,只是 HTML5 拖放功能。

我已经多次使用基本的 jQuery 向页面添加拖放功能,但我想为我当前的项目使用新的 HTML5 拖放功能。拖动对于我包含在 HTML 中的任何元素都非常有效,但我似乎无法动态添加元素并使它们可拖动。我怀疑这是因为在创建新元素之前加载页面时所有可拖动事件监听器都已绑定(bind)。有没有人有幸使用 HTML5 使动态添加的元素可拖动?或者有没有办法在不重新加载页面的情况下重新绑定(bind)事件监听器?

对任何 HTML5 拖动事件使用 .bind() 似乎都不起作用。即,

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

永远不会触发,尽管 .bind() 与点击事件工作正常。我猜这是因为“拖动”对 jQuery 没有任何意义。顺便说一下,我在新元素中包含了 draggable="true" HTML 标签。

那么,任何人都有将 HTML5 拖动事件绑定(bind)到动态创建的元素的成功案例,或者这是不可能的?谢谢!

最佳答案

有两种方法可以做到这一点。第一种是使用在调用 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?');
});

关于javascript - 是否可以在动态创建的元素中使用 HTML5 拖放功能?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26983138/

相关文章:

jquery - chrome 中的 css 仅在检查元素后有效

javascript - 自定义打印功能,打印内容在第一次事件触发时不显示

php - 使用 jquery ajax 通过 GET 更新动态创建的图像

html - 具有相同 <td> 百分比的两个表中的不同输出

javascript - 从 ng-include 上的单独 Controller 设置时 $parent 变量损坏

javascript - 重置密码后如何从其他浏览器注销

jQuery,响应式菜单不起作用

html - 更改行背景图像宽度而不影响行的最大宽度

Javascript正则表达式匹配字符串

javascript - 翻译使用 Javascript 中的 Algolia 提取的动态内容