0
编辑元素添加一个插件,当jQuery的无限递归。这工作正常,这个简单的功能:特林呼吁对DOM
$(function() {
var activator = 'data-widget="bootstrap-switch"';
$('input[type="checkbox"][' + activator + ']')
.each(function() {
$(this).bootstrapSwitch();
});
});
如果什么复选框创建/加入的飞行到DOM,即点击一个按钮?
我试图抓住DOMNodeInserted
事件,然后调用bootstrapSwitch()
添加的元素,只有当.data('bootstrap-switch')
是undefined
。我得到以下控制台错误(有大量的复选框一起:P):
Uncaught RangeError: Maximum call stack size exceeded.
任何人都可以点我朝着正确的方向?
$('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
}
});
谢谢您的anwser,但'#BTN-add'和' #btn-copy'只是一个例子:复选框可以通过其他方式添加到DOM中(即我无法控制它)。在这种情况下是否有解决方案? – gremo
@gremo是的,通过应用这里演示的相同模式。如果有什么理由说明为什么这种模式不起作用,那么就必须阐明这一点,或许需要一个更加仔细的新问题。 – klenwell