8

我有一个基于输入字符串选择文本的函数。如果两者都匹配,我将其选中。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...我做错了什么?

4

5 回答 5

23

异常文本非常具有描述性。你真的不能breakif子句中使用语句。在您的情况下,您应该使用return false来停止.each()迭代。

于 2013-05-06T10:43:03.243 回答
3

break语句旨在结束for, while or do-while循环或 switch 语句。它在您使用它的地方没有副作用。你想达到什么目的?

在您的具体情况下,只需return false

于 2013-05-06T10:43:39.183 回答
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");
}
于 2013-05-06T10:43:23.853 回答
2

打破你可以return false;,就像

if($(this).text() === selectedValue){
    $(this).attr("selected", "selected");
    return false;
}

从每个函数中返回 'false' 会完全停止遍历所有元素的循环(这就像在正常循环中使用 'break')。从循环中返回“真”会跳到下一次迭代(这就像在正常循环中使用“继续”)

于 2013-05-06T10:44:22.730 回答
1

根据 jQuery 文档,break 是跳出循环。你不能在 if 语句中使用它。

你可以return false改用。

jQuery.each(arr, function() {
      $("#" + this).text("Mine is " + this + ".");
       return (this != "three"); // will stop running after "three"
   });
于 2013-05-06T10:48:08.970 回答