我在20个元素上使用jQuery切换功能,所以我用了循环。
以下代码仅打印最后一个功能,即20号切换功能。
我想调用所有切换功能,我该怎么做?
for(var _rr=1;_rr<=20;_rr++) {
$("#scell_img"+_rr).toggle(function () {
$("#scell_img1").attr('src','./resources/img/cancercell/cell_'+_rr+'.png');
_US620310CD_1._smallclickcount = _US620310CD_1._smallclickcount + 1;
}, function () {
$("#scell_img"+_rr).attr('src','./resources/img/cancercell/cell'+_rr+'.png');
_US620310CD_1._smallclickcount = _US620310CD_1._smallclickcount - 1;
});
}
答案 0 :(得分:2)
我认为问题是变量_rr
是通过回调函数中的闭包来访问的,因此每次调用回调时它的值都是20。试试这个:
for(var _rr=1; _rr<=20;_rr++) (function(_rr) {
$("#scell_img"+_rr).toggle(function () {
$("#scell_img1").attr('src','./resources/img/cancercell/cell_'+_rr+'.png');
_US620310CD_1._smallclickcount = _US620310CD_1._smallclickcount + 1;
}, function () {
$("#scell_img"+_rr).attr('src','./resources/img/cancercell/cell'+_rr+'.png');
_US620310CD_1._smallclickcount = _US620310CD_1._smallclickcount - 1;
});
})(_rr);
包装函数提供了一个新的范围,其中有一个新变量(也称为_rr
),其值不会被循环更改。