我有一个根据输入字符串选择文本的函数。如果两个匹配我选择它。 PFb函数,
function setDropdownTextContains(dropdownId,selectedValue,hfId){
$('#'+dropdownId+' option').each(function(){
if($(this).text() === selectedValue){
$(this).attr("selected", "selected");
break;
}
});
$('#'+hfId).val("ModelName doesnt match");
}
我收到以下错误unlabeled break must be inside loop or switch
...我做错了什么?
答案 0 :(得分:20)
异常文本非常具有描述性。你真的不能在break
子句中使用if
语句。在您的情况下,您应该使用return false
来停止.each()
次迭代。
答案 1 :(得分:2)
$().each
是一种函数方法,因此您将使用return
function setDropdownTextContains(dropdownId,selectedValue,hfId){
$('#'+dropdownId+' option').each(function(){
if($(this).text() === selectedValue){
$(this).attr("selected", "selected");
return false; // <--
}
});
$('#'+hfId).val("ModelName doesnt match");
}
答案 2 :(得分:2)
break
语句旨在结束for, while or do-while
循环或switch语句。它在您使用它时没有副作用。你想要实现什么目标?
在您的具体情况下,只需return false
答案 3 :(得分:2)
打破你可以return false;
,就像
if($(this).text() === selectedValue){
$(this).attr("selected", "selected");
return false;
}
从每个函数中返回'false'完全停止了 遍历所有元素(这就像使用'break'一样 正常循环)。从循环内返回'true'会跳到下一个 迭代(这就像使用带有正常循环的'continue')
答案 4 :(得分:1)
根据jQuery文档,break是打破循环。你不能在if语句中使用它。
您可以改为使用return false
。
jQuery.each(arr, function() {
$("#" + this).text("Mine is " + this + ".");
return (this != "three"); // will stop running after "three"
});