編集: 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
呼び出そうとしましたが、 . 次のコンソール エラーが表示されます (多数のチェックボックスと共に :P):bootstrapSwitch()
.data('bootstrap-switch')
undefined
Uncaught RangeError: 最大呼び出しスタック サイズを超えました。
誰かが私を正しい方向に向けることができますか?
$('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
}
});