2014-08-30 86 views
1

我有bootstrap spinedit插件。当我附上它的任何现有元素如何将jQuery插件附加到动态生成的元素

我已经在DOM准备

$('.spin').spinedit({ step: 5 }); 

把下面的代码,它工作正常不过,这是不工作的动态添加输入。每当Dom中添加新元素时,我都可以注册。但我正在寻找像jQuery的.on事件。所以我只需要编写附加插件代码一次,它将适用于所有。

在此先感谢。

$(".sortable").sortable({ 
     connectWith: '.sortable', 
     iframeFix: false, 
     items: 'div.widget', 
     opacity: 0.8, 
     helper: 'original', 
     revert: true, 
     forceHelperSize: true, 
     placeholder: 'sortable-box-placeholder round-all', 
     forcePlaceholderSize: true, 
     tolerance: 'pointer' 
    }); 
+5

没有神奇的解决方案,应用插件插入 – charlietfl 2014-08-30 11:46:04

+0

后约插件活动是什么?我是否也需要注册? – 2014-08-30 11:52:05

+0

你是什么意思'注册事件'? – charlietfl 2014-08-30 12:08:21

回答

-1

将事件委托给父项。假设您的父母拥有类.parent,您几乎可以在所有事件情况下执行以下操作。

$('.parent').('spinedit', '.spin', { step: 5 }); 

现在,即使你添加更多.spin元素动态的,一切都会被分配所有的JavaScript事件。

阅读更多关于on这里https://api.jquery.com/on/

+0

这并不能保证它可以工作,除非插件触发一个名为“spinedit”的自定义事件。另外,'.on()'监听事件冒泡,它不检查DOM突变。 – Terry 2015-03-30 10:56:15

+0

这就是为什么大多数情况下,并非全部。如果你在每个子对象上应用'on'来消费事件,它也会处理子对象突变。您可以尝试使用'div'按钮内的基本点击事件并动态添加更多的按钮。 – Bikas 2015-03-30 10:58:45

+0

你没有明白我的观点 - '.on()'方法**不检查DOM突变**。它只是监听一个自定义或本地事件,从选择器中选择一个选择器(如果指定)冒泡。它不会动态绑定新的事件处理程序到新添加的DOM节点。引用[官方文档](https://api.jquery.com/on/):“jQuery将事件从事件目标拖动到处理程序所附的元素(即最内层到最外层元素)和**为匹配选择器的路径上的任何元素运行处理程序。**“ – Terry 2015-03-30 11:01:05