0
我使用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) {...
但是,让页面加载后产生的新的元素没有看到这个代码。
我该怎么做才能让新创建的元素看到上面的代码,检查是否点击复选框?
从文档:事件处理程序只能绑定到当前选择的元素;它们必须在您的代码调用.on()时存在 - 换句话说,使用现有的元素(如文档)并委托给您的输入字段。 – 2015-04-05 19:46:07
养成使用指令来绑定这些事件的习惯 – charlietfl 2015-04-05 20:16:59
@charlietfl你有一个很好的例子来说明如何做到这一点? – webdad3 2015-04-05 20:18:37