当前位置: 首页 > 知识库问答 >
问题:

for循环中的自动执行匿名单击函数

柯波峻
2023-03-14

我需要一个for循环中的click函数,这样每个id元素都可以单击。但是我还需要click函数中的I,这就是为什么我认为自动执行匿名函数是最好的方法。但出于某种原因,这不起作用,可能是因为单击函数不允许我转发参数?我做错了什么?

for (var i = 0; i < countItems; i++) {     
        $("#item-" + i).click(function(idx) {
           alert(idx);
    })(i)
}

共有3个答案

颜修为
2023-03-14

你可以试试这样的

for (var i = 0; i < countItems; i++) {     
    $("#item-" + i).click(clickFunctn);
}

function clickFunctn(obj){
    var i=$(obj).attr('id').split('-')[1];
    alert(i);
}

通过这种方式,你将优化代码,你的“我”也将与你同在,所有项目都可以点击。您只需要绑定一个处理函数。

孟雪风
2023-03-14

附带说明,使用bind()javascript方法:

for (var i = 0; i < countItems; i++) {
    $("#item-" + i).click(function(indx){
           alert(indx);
    }.bind($("#item-" + i)[0],i));
}
斜宁
2023-03-14

自动执行函数必须返回一个函数:

for (var i = 0; i < countItems; i++) {
    $("#item-" + i).click(function(indx){
        return function(){  //must return a function
           alert(indx);
        }
    }(i));
}

JS小提琴:http://jsfiddle.net/HuHXr/

 类似资料:
  • 我经常这样编写JS自动执行匿名函数 但前几天我在某人的代码里看到了这个 有什么不同,推荐哪一种?

  • 问题内容: 我已经找到了一种使代码按我希望的方式运行的方法,但是我想了解为什么它如此运行,以便提高对Go并发性的理解。 我正在测试以等待一些goroutine完成,因为我计划以这种方式多次上传到Amazon S3。 这是我最初的代码: 我很惊讶地看到输出是:。 取而代之的是这样的:。 由于循环甚至没有达到6,这对我来说毫无意义。后来我将该变量作为参数传递给匿名函数,然后按预期运行。 为什么会这样?

  • 问题内容: 最近,我将json2.js的当前版本与项目中使用的版本进行了比较,并发现函数表达式的创建和自我执行方式有所不同。 用于将匿名函数包装在括号中然后执行的代码, 但是现在它将自动执行的函数包装在括号中。 有通过CMS在接受答案的注释解释JavaScript的封装匿名函数的语法是“既:和有效。” 我想知道有什么区别吗?前者是否通过留下全局匿名函数来占用内存?括号应位于何处? 问题答案: 它们

  • 问题内容: 在javascript中,存在创建匿名函数并立即调用它的常见模式(通常称为自执行匿名函数或立即调用的函数表达式)。 使用Java 8 lambda,是否有标准方法可以复制此行为?有点像。 这个问题基本上提出了相同的问题,但是对于Java7。我正在明确地寻找使用lambda的构造。 问题答案: 也不是没有声明类型。由于Java是静态类型的语言,并且函数不是一等公民,因此编译器需要知道la

  • 在javascript中,常见的模式是创建匿名函数并立即调用它(通常称为自动执行匿名函数或立即调用的函数表达式)。 对于Java8 lambdas,是否有复制这种行为的标准方法?类似于