我正在使用angularjs向我的屏幕添加元素,最初因为.live在jQuery中被折旧我正在执行以下操作:
var CHECK_INTERVAL = 100; //100 = 1/10th second, choose appropriate
function checkForElement() {
$('input[type=checkbox]').each(function (index) {
$(this).bootstrapSwitch();
$('input[id^="chk"]').on('switchChange.bootstrapSwitch', function (event, state) {
//alert('got here!');
});
});
setTimeout(checkForElement, CHECK_INTERVAL);
}
setTimeout(checkForElement, CHECK_INTERVAL);
在我必须使用初始页面加载后显示的新元素之前,一切都运行良好。
我有以下代码操作代码的另一部分:
$('input[id^="chk"]').on('switchChange.bootstrapSwitch', function (event, state) {...
但是,在页面加载后创建的新元素看不到此代码。
我该怎么做才能让新创建的元素看到上面的代码,检查是否点击了复选框?
答案 0 :(得分:1)
您必须使用:
$(document).on(event, element, function() {});
关于你的案子:
$(document).on('switchChange.bootstrapSwitch', 'input[id^="chk"]', function (event, state) { ... }