如何在 for 循环中使用 jQuery 切换功能

How to use jQuery toggle function in a for loop

本文关键字:jQuery 功能 for 循环      更新时间:2023-09-26

我在 20 个元素上使用 jQuery 切换函数,所以我使用了 for 循环。

下面的代码只打印最后一个函数,即第 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;
    });
}

我相信问题是变量_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),其值不会被循环更改。