javascript - js中的for循环记录另一个索引
问题描述
我做了类似下面显示的代码:
for(var is = 1; is <= 10; is++) {
$('#add1-' + is).click(function () {
console.log(is);
});
}
当我单击按钮 id=add1-1
控制台日志显示 is=11 和相同的add1-2
, index name is
= 11 什么可以解决这个问题?
解决方案
如果你真的想做一个循环,你将不得不做这样的事情:
for (var is = 1; is <= 10; is++) {
$('#add1-' + is).on('click', {is}, function(e) {
console.log(e.data.is);
});
}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<div id="add1-1">click me 1</div>
<div id="add1-2">click me 2</div>
<div id="add1-3">click me 3</div>
但是,这样做会更好:
$('[data-is]').on('click', function(e) {
console.log($(this).data('is'));
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<div data-is="1" id="add1-1">click me 1</div>
<div data-is="2" id="add1-2">click me 2</div>
<div data-is="3" id="add1-3">click me 3</div>
data-
属性允许您将数据绑定到元素,并且比为此目的使用 ID 本身更合适。在文档中阅读它们。
推荐阅读
- java - 如何为班级生成随机数?
- php - ajax url地址的问题。它不起作用
- sulu - Sulu:如何正确重命名/删除网络空间
- postgresql - postgresql 中使用复合类型的数据库设计
- asp.net-core - 在 Blazor WebServer 和 ASP.NET Core API 之间共享用户登录
- android - 我可以写入数据,但无法在 Firebase 中读取
- clojure - 调用 clojure.core/defn 不符合规范
- r - 安装 R 包时,R 如何检查系统外部依赖项?
- android - 为什么 ViewModelProviders 已被弃用?
- ios - 快速禁用来自 WKWebview 的 Youtube 应用重定向