我有一个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时,它是未定义的。有没有办法检索它?
答案 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
代替。