jQuery无限递归当字符串调用DOM上添加的元素上的插件时
jQuery infinite recursion when tring to call a plugin on elements added on the DOM
编辑:http://jsfiddle.net/J26Dw/(点击添加(
我想为每个标有属性data-widget="bootstrap-switch"
的复选框调用bootstrapSwitch()
插件。这与这个简单的功能配合得很好:
$(function () {
var activator = 'data-widget="bootstrap-switch"';
$('input[type="checkbox"][' + activator + ']')
.each(function () {
$(this).bootstrapSwitch();
});
});
如果复选框是在DOM中动态创建/添加的,即单击按钮,该怎么办?
我尝试捕获DOMNodeInserted
事件,然后在添加的元素上调用bootstrapSwitch()
,前提是.data('bootstrap-switch')
是undefined
。我收到以下控制台错误(以及大量复选框:P(:
未捕获的范围错误:超过了最大调用堆栈大小。
有人能给我指正确的方向吗?
$('body').on('DOMNodeInserted', '[' + activator + ']', function(e) {
var el = $(e.target);
console.log(el.attr('data-widget')); // Returns "bootstrap-switch", OK
if (!el.data('bootstrap-switch')) {
el.bootstrapSwitch(); // Infinite recursion
}
});
bootstrapSwitch
必须引起递归循环。它显然重建了复选框。在这样做的过程中,它必须重新触发DomNodeInserted
回调,比如删除目标元素并将其重新附加到文档中。
无论如何,我认为这实现了你想要做的事情:
$(function () {
var options = {},
selector = 'input[type="checkbox"][data-widget="bootstrap-switch"]',
activator = function () { $(this).bootstrapSwitch(options); };
$(selector).each(activator);
$('#btn-add').click(function () {
var $newInput = $('<input>', {
"type": 'checkbox',
"data-widget": 'bootstrap-switch'
});
$('.holder').append($newInput);
activator.apply($newInput);
});
$('#btn-copy').click(function () {
var $clonedInput = $('#switch').clone();
$('.holder').append($clonedInput);
activator.apply($clonedInput);
});
});
Fiddle here:http://jsfiddle.net/klenwell/LAUx9/
相关文章:
- 如何正确地将jquery插件添加到webpack中的jquery对象中
- jQuery美国地图插件-为每个点击状态添加unique.html
- 我该如何为video.js制作一个插件,在HTML标题中添加和删除三角形
- 动态添加facebook社交插件时不会显示
- Jquery循环洗涤器插件:添加到图像的链接
- 向插件添加属性(不是默认方式)
- 在wordpress主题中添加花哨的灯箱,而无需使用插件
- 如何在RT上添加插件和使用一些外部模块/文件
- 如何将自定义插件添加到KeystoneJS管理UI中
- 使用所选插件更改动态添加的选择上的事件
- 从插件向Datatables添加额外的服务器参数
- 如何在jquery locationpicker插件中为地图添加样式
- jQuery同位素插件添加过滤器
- 动态添加选项以选择多个JQuery插件
- jQuery插件“whatweather”如何编辑JS文件中的添加值
- CKEDITOR添加插件到源视图
- 如何使用TypeScript和Angular 2向ng2-ckeditor添加插件
- 在使用rails_admin时添加插件到ckeditor
- 是否有可能在量角器测试下向firefox添加插件?
- Wagtail / halloo .js -添加插件但修改的内容不保存