从jquery中检索变量each()

时间:2011-03-19 18:45:00

标签: jquery

我有一个div列表,可能有也可能没有分配给它们的类“突出显示”。

<div id='1' class='box'></div>
<div id='2' class='box highlight'></div>
<div id='3' class='box'></div>

我正在使用Jquery each()来识别哪个类具有分配给它的类高亮显示并获取id。

 $('.box').each(function(){
        if ($(this).hasClass('highlight')){
            var id = $(this).attr('id');//get the id    
            console.log('It has the class = ' + id);//this shows correctly 
        }                       
    });

//outside of the each()
    console.log('id = ' + id);//this does not show the id "undefined"

当我尝试在each()之外检索id时,它是未定义的。有没有办法检索它?

5 个答案:

答案 0 :(得分:3)

最简单的方法是在没有循环的情况下完成:

var id = $('.box.highlight').attr('id');

但是为了使它适用于循环,你需要在循环之前声明id变量:

var id;

$('.box').each(function(){
    if ($(this).hasClass('highlight')){
        id = $(this).attr('id');//get the id    
    }                       
});

问题是variable scope,您应该阅读。

答案 1 :(得分:0)

您可以改为$('.box.highlight').attr('id');

如果您真的想要访问用于.each()的内部函数的变量OUTSIDE,则需要在该函数之外定义变量。请注意,这对于异步调用的方式不同,但应该与.each()

一起使用
var id;
$('.box').each(function(){
    if ($(this).hasClass('highlight')){
        id = $(this).attr('id');//get the id    
        console.log('It has the class = ' + id);//this shows correctly 
    }                       
});
console.log('id', id);

答案 2 :(得分:0)

更新适当范围内的变量:

 var id;
 $('.box').each(function(){
        if ($(this).hasClass('highlight')){
            id = $(this).attr('id');//get the id    
            console.log('It has the class = ' + id);//this shows correctly 
        }                       
    });

答案 3 :(得分:0)

var关键字使函数本地变量id。试着说id = ...

答案 4 :(得分:0)

javascript中的变量范围是按功能划分的,因此当您在.each(function() { var id; })内声明该变量时,它只能在那里访问。如果您希望在该函数之外可以访问它,则应在.each之前声明它,但您仍然可以在.each中使用它。由于它的范围更全局,因此变量名称应该更具体,而不仅仅是id,而是使用boxHighlightId代替。