在Javascript中返回语句?

时间:2013-12-23 11:10:39

标签: javascript jquery

我的JavaScript代码为:

$('[id^="thresholdParameter_"]').each(function(i, value) {  

        //any field is edited
        if($(this).val() !== previousThresholdParameters[i]){
            alert('Hello');
            return true;
        }
    });

在这里,我想要一旦达到return true;,它必须从函数中退出并返回真值。然而,它一直在迭代。

为什么会这样? JavaScript中的return不像Java中的return那样起作用

5 个答案:

答案 0 :(得分:3)

在每个回调中返回false只会停止每个函数。

请参阅jQuery每个API的最后一个示例:http://api.jquery.com/each/

你可以试试这个:

var conditionMet = false;

$(selector).each(function() {
  if (innerConditionMet) {
    conditionMet = true;
    return false; // stop the each
  }
});

答案 1 :(得分:3)

使用return false代替return truereturn true被视为continuereturn falsebreak视为$.each loop,< / p>

$('[id^="thresholdParameter_"]').each(function(i, value) {  
    //any field is edited
    if($(this).val() !== previousThresholdParameters[i]){
        alert('Hello');
        return false; // use false
    }
});

来自$.each()

  

我们可以在特定的迭代中打破$ .each()循环   回调函数返回false。返回非假是与a相同   在for循环中继续声明;它将立即跳到下一个   迭代。

答案 2 :(得分:1)

试试这个,因为在您的情况下,您似乎想要返回true并在其他地方使用:

var flag = false;
$('[id^="thresholdParameter_"]').each(function(i, value) {  
  //any field is edited
  if($(this).val() !== previousThresholdParameters[i]){
    alert('Hello');
    flag = true;
    return false;
  }
});

答案 3 :(得分:1)

var x = $('[id^="thresholdParameter_"]');

for(i in x){

if(x[i] !== previousThresholdParameters[i]){

 alert('Hello');
 return true; //
 break;

 }
}

答案 4 :(得分:0)

retun false以突破$ .each()

尝试这个小提琴以便更好地理解:http://jsfiddle.net/patelmilanb1/q348g/

<div class="number">
     <h1>1</h1>

     <h1>2</h1>

     <h1>3</h1>

     <h1>4</h1>

     <h1>5</h1>

     <h1>6</h1>

     <h1>7</h1>

</div>

$('.number h1').each(function () {
    var h1Value = $(this).text();
    if (h1Value == 5) {
        return false;
    } else {
        $(this).css("background-color", "#F1F1EF");
    }
});

它会为所有h1添加背景颜色,直到它达到数字5,然后突破$ .each循环