Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/417.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
JavaScript类&;jQuery循环变量引用_Javascript_Jquery - Fatal编程技术网

JavaScript类&;jQuery循环变量引用

JavaScript类&;jQuery循环变量引用,javascript,jquery,Javascript,Jquery,我有循环函数和jqueryclick函数,我希望在单击之后执行特定的函数。id类很重要,因此与jQuery一样,单击定义。单击具有特定id的元素后,我想执行特定的函数。能改变的只有功能b var a = { id: { "id1": function () { console.log(1) }, "id2": function () { console.log(2) }, "id3": function () { console.log(3) } }, b: function

我有循环函数和jqueryclick函数,我希望在单击之后执行特定的函数。id类很重要,因此与jQuery一样,单击定义。单击具有特定id的元素后,我想执行特定的函数。能改变的只有功能b

var a = {

    id: { "id1": function () { console.log(1) }, "id2": function () { console.log(2) }, "id3": function () { console.log(3) } },
    b: function () {

        $this = this;

        for (v in $this.id) {

            $("#" + v).click(function () {

                $this.id[v]();

            });
        }

    }

}

单击元素后,我想查看
id1=1、id2=2、id3=3
。但该代码为每个元素写入值3。这个例子很简单。问题是变量引用我知道,但我找不到正确的解决方案。谢谢

将其包装在IFFE函数中。阅读更多关于范围和生命的信息

我提供了一个与你的问题相关的例子:

function(){
var$this=这个;

对于(var v=0;v与许多其他帖子重复。问题是,
for
循环在实际调用单击处理程序时早已完成,因此
v
具有循环的终值。解决方案是将单击处理程序赋值放在一个函数中,并将
v
传递给该函数。这太复杂了事情。摆脱匿名函数,只需执行以下操作:
$(“#”+v)。单击(this.id[v])
谢谢,但这不起作用。修复了它并添加了一个示例。Ecmascript 6中还有一个新功能,它通过一些语法糖解决了这个问题。它是一个名为“let”的关键字这在更少的行中解决了这个问题,尽管浏览器支持现在不是100%。thans,我更新了你的代码并开始工作,谢谢!
function() {
    var $this = this;
    for (var v = 0; v <= 4; v++) {
        (function() {
            var i = v;
            $("#v" + i).on("click", function(e) {               
                e.stopPropagation();
                alert('hi' + i);
            });
        })();
    }    
}