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