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

Is this break statement valid in jquery/javascript?

本文关键字:有效 javascript break 语句 jquery 这个      更新时间:2023-09-26

我有一个基于输入字符串选择文本的函数。如果两者都匹配,则选中它。功能,

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…我做错了什么?

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

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

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

$().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");
}

要打破你可以只是return false;,像

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

从每个函数中返回'false'将完全停止循环遍历所有元素(这就像使用'break'和正常循环)。从循环内返回'true'将跳转到下一个循环迭代(这就像在普通循环中使用'continue')

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

你可以用return false代替。

jQuery.each(arr, function() {
      $("#" + this).text("Mine is " + this + ".");
       return (this != "three"); // will stop running after "three"
   });