这个break语句在jquery / javascript中有效吗?

时间:2013-05-06 10:41:47

标签: javascript jquery break

我有一个根据输入字符串选择文本的函数。如果两个匹配我选择它。 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 ...我做错了什么?

5 个答案:

答案 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"
   });