要退出
未捕获的SyntaxError:非法的break语句
这是我试图打破循环时得到的警告。当条件满足时,我想做的是打破循环。在示例代码中,我有两个活动类,当遇到第一个活动类时,我想完全脱离循环。
<ul>
<li id="foo1" class="bar">1</li>
<li id="foo2" class="bar">2</li>
<li id="foo3" class="bar">3</li>
<li id="foo4" class="bar">4</li>
<li id="foo5" class="active">5</li>
<li id="foo6" class="bar">6</li>
<li id="foo7" class="bar">7</li>
<li id="foo8" class="active">8</li>
</ul>
js
$(function(){
function setup(){
var x,y,z;
$("ul li").each(function(){
//console.log($(this)[0].className);
if($(this)[0].className === 'active'){
x = $(this)[0].className;
y = $(this)[0].tagName;
z = $(this)[0].id;
break;
}
});
var return_values = {
class : x,
tag : y,
id : z
}
return(return_values);
}
var data = setup();
console.log(data.class,data.tag,data.id);
});
JSFIDDLE此处
each()
中的匿名函数,请使用return false
。还要注意,使用DOMElement创建jQuery对象,然后访问DOMElement的属性是完全多余的。试试这个:
$("ul li").each(function() {
if (this.className === 'active') {
x = this.className;
y = this.tagName;
z = this.id;
return false;
}
});
还要注意,您的代码实际上只选择了第一个.active
元素,因此循环是多余的。你可以直接选择该元素并从中检索必要的属性。试试这个:
const $li = $('ul li.active:first');
let x = $li.prop('className');
let y = $li[0].tagName;
let z - $li.prop('id');