我有以下代码:
$(document).ready(function () {
for (i = 1; i <= number_of_banners; i++) {
var selector = "#link_" + i;
$(selector).click(function () {
alert(i);
});
}
});
但警报()不能从一开始的“我”变量循环。 如何使用的变量i for循环。点击函数内?
我有以下代码:
$(document).ready(function () {
for (i = 1; i <= number_of_banners; i++) {
var selector = "#link_" + i;
$(selector).click(function () {
alert(i);
});
}
});
但警报()不能从一开始的“我”变量循环。 如何使用的变量i for循环。点击函数内?
您可以使用此代码:
$(document).ready(function () {
for (var i = 1; i <= number_of_banners; i++) {
var selector = "#link_" + i;
$(selector).on('click', {id: i}, function (e) {
alert(e.data.id);
});
}
});
你应该使用on
方法和使用参数点击它,而不是使用onclick
方法
使用jQuery 。对(事件,数据,处理程序),你可以很容易地做到这一点。
$(document).ready(function () {
for (var i = 1; i <= number_of_banners; i++) {
var selector = "#link_" + i;
$(selector).on('click', {id: i}, function (e) {
alert(e.data.id);
});
}
});
工作样本
可能出现这种情况是由于对这一事实的JavaScript提升 JavaScript的作用域机制?
例如:
如JavaScript使用功能范围 ,而不是阻止范围 ,因为我们通常像Java和C#等语言习惯不起作用。 为了使其工作,一个人通过明确创建一个新的匿名函数,然后绑定变量根据创建一个新的范围:
我知道这并不直接回答上面的问题,但仍可能虽然为他人绊倒在这个问题上是有用的。
我想你可以把它作为一个参数为匿名函数,只要该函数可以访问我一个范围内声明。
function (i) {
alert(i);
}
一个快速的解决办法是使用EVENTDATA并存储当前i
在:
$(document).ready(function () {
for (var i = 1; i <= number_of_banners; i++) {
var selector = "#link_" + i;
$(selector).bind('click', i, function (e) {
alert(e.data);
});
}
});
如果你正在使用jQuery 1.7+然后使用上 ,而不是绑定的