gpt4 book ai didi

javascript - JS变量作用域的误解

转载 作者:行者123 更新时间:2023-11-28 12:49:44 25 4
gpt4 key购买 nike

我有一个小问题:SlideHelpers.total = 4

for (i=1;i <= slideHelpers.total; i++) {
$('<a href="#">' + i + '</a>').bind('click', function(){ alert('go to the ' + i + ' slide')}).appendTo('.slideaccess')
}

警报给出了5,这是什么逻辑,因为当函数点击触发时,i实际上是5。但我希望有与我的<a>中相同的i。标签。处理这个问题的最佳方法是什么?

我可以将 i 放入 <a> 的 data() 中例如标签,但我确信有一种更简单的方法。

最佳答案

for (i=1;i <= slideHelpers.total; i++) {
$('<a href="#">' + i + '</a>').bind('click',
(function(i){
// Capture i in closure
return function(){
alert('go to the ' + i + ' slide')
};
})(i)
).appendTo('.slideaccess')
}

优化:

var ary = [], i = 0, n = slideHelpers.total,
open = '<a class="index" href="#">',
close = '</a>';

// Fill array with numbers: 1,2,3,4,5...
while (++i < n) ary[i] = i + 1;

$('.slideaccess').append(
open + ary.join(close + open) + close
).delegate('a.index', 'click', function() {
var index = $.text(this);
alert('go to the ' + index + ' slide');
});

关于javascript - JS变量作用域的误解,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2689075/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com