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、 谢谢大家!!