javascript - 动态添加元素上的每个循环的单击事件 javascript / jquery
问题描述
我的问题是$('input[name=isDefault]').length
equal 2
,但每个都只运行一个。
$(saveProduct).click(function (e) {
$('input[name=isDefault]').each(function (index) {
var that = this;
console.log(index, 'index');
console.log($('input[name=isDefault]').length);
// do something...
})
})
$('input[name=isDefault]')
是在另一个逻辑期间动态添加 obj。我知道有这样的解决方案$(upper container).on("event", dynamic obj inside upper container)
- 但这会导致点击事件几乎无处不在,因为.on
正在附加事件big area container
编辑: 出于测试目的,我做了一些更改:
var imgs = imgs = $('div[name=fileContainer]');
console.log('before loop', imgs.length); // = 1
for (var i = 0; i < imgs.length; i++) {
console.log('inside loop', imgs.length); // = 1
//do something - imgs is dynamicly added html element by jquery, when I load page there is 1 element with that name
}
$('div[name=fileContainer]').length;
,但是当我在控制台中写入时它是相等的2
(当然当我动态添加 + 1 fileContainer 元素时)
编辑:
这不是答案,但我省略了使用上述循环的需要。在代码的其他地方,我已经有了$(something).on("change", dynamiclyAddedElements function() {})
不同的主要目的......但是!在那里我添加了额外的功能,我用所需的数据创建了 javascipt obj。然后我可以在上述click
事件中使用它们。
解决方案
$(upper container).on("event", dynamic obj inside upper container) - 但这会导致点击事件几乎无处不在,因为 .on 将事件附加到大区域容器上
不对,可以用第二个参数指定选择器
例如
$('#upper_container').on('click', '.saveProduct', function(){...})
将单击处理程序添加到(也动态添加).saveProduct
而不是#upper_container
您声称的
推荐阅读
- html - 如何获取 HTML 画布元素的 PPI?
- python - 正则表达式获取句号之前的所有数字
- excel - 在不同的列中拆分数据
- ios - iOS 订阅:为什么让沙盒中的订阅卡在 is_in_billing_retry_period 中?
- javascript - 当孩子得到显示时隐藏父母
- android - 我如何在使用 ArrayList 的自定义列表视图中搜索数据
- java - 尝试将 Flutter 与现有项目一起使用时无法更改配置“:flutter:releaseApi”的依赖项
- javascript - 无法从输入字段中获取数据?
- java - JHipster 多数据源导致 JdbcSQLSyntaxErrorException: Sequence "SEQUENCEGENERATOR" not found
- postgresql - 向 Postgresql 约束检查插入数据失败