Javascript 每个函数和传递的变量

Javascript 每个函数和传递的变量,javascript,jquery,Javascript,Jquery,我想在无序列表中循环一组 在jQuery中,我会这样做: $("#list ul li a").each(function (x) { // Do Stuff }); 这可能是一个简单的问题,但是如何传递函数中显示的id变量呢?我可以想象它是这样的: var myVar = 'foo'; $("#list ul li a").each(myVar, function (x) { // Do Stuff console.log(x); }); 控制台输出

我想在无序列表中循环一组

在jQuery中,我会这样做:

$("#list ul li a").each(function (x) {
 // Do Stuff
});
这可能是一个简单的问题,但是如何传递函数中显示的
id
变量呢?我可以想象它是这样的:

  var myVar = 'foo';
   $("#list ul li a").each(myVar, function (x) {
     // Do Stuff
     console.log(x);
    });
控制台输出:
foo


但是这似乎不起作用,我该怎么做呢?

您不需要在
每个(myVar,函数(x)
上传递变量。您可以在
每个
中使用
myVar

var myVar = 'foo';
   $("#list ul li a").each(myVar, function (id) {
     // Do Stuff
     console.log(id.attr("id"));
    });
var myVar = 'foo';
$("#list ul li a").each(function (x) {
   // Do Stuff
   console.log(x); // element index
   console.log(myVar); //foo
});
让我们看看这段代码有什么问题

var myVar = 'foo';
$("#list ul li a").each(myVar, function (x) {
    // Do Stuff
    console.log(x);
});
您将获得:

未捕获类型错误:未定义不是函数

因为第一个参数是一个
函数
,它是一个变量

另外,
函数(x)
将永远不会被调用,因为
每个
只接受一个参数。

以下是解决方案

只需像这样使用“this”关键字:

        var myVar = 'foo';
        $("#list ul li a").each(function () {
           console.log($(this).attr('id'));
        });

谢谢。

$(this).attr('id');将引用当前元素的id,因此,如果我答对了您的问题,也许这就是您问题的答案。不清楚“传递变量通过”是什么意思。在传递给的回调中编写代码。each()可以“查看”像“myVar”这样的局部变量在周围的代码中。您到底想做什么?@Pointy真的可以吗?我有很多次.each和.ajax无法看到我的局部变量。@Chud37这取决于它们声明的位置。在您的示例中,
each()中的
console.log(myVar)
可以正常工作。@Chud37看看这个:
.each()
只接受一个参数,该参数必须是一个函数。我认为这个答案不是OP想要的。@t请确认这不是我想要的答案。@Chud37我是根据您的需要改编的。@Chud37 myVar在函数作用域中定义的!您不需要传递它。谢谢,我想我误解了变量作用域。这项工作s、 谢谢大家!!