2013-12-23 153 views
-3

我有我的JavaScript代码:返回语句在Javascript中?

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

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

在这里,我想,一旦它到达return true;它得出来的功能,并返回真值。然而,它一直在迭代。

这是为什么? JavaScript中的返回函数不像Java中的返回值?

+0

请确保符合条件并执行警报语句。 –

+4

下一次请阅读[文档](http://api.jquery.com/each/)... – kapa

+1

我认为你应该使用“return false;”而不是“回归真实”;打破循环 –

回答

3

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

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

你可以试试这个:

var conditionMet = false; 

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

使用return false代替return true,为return true视为continuereturn false$.each loopbreak

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

Fro米$.each()

我们可以通过使 回调函数返回false突破$。每()循环在特定的迭代。返回非错误与for循环中的 continue语句相同;它会立即跳到下一个 迭代。

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; 
    } 
}); 
0

retun假打出来的。每$()

试试这个小提琴为了更好的理解: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号,然后突破$。每个循环

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

for(i in x){ 

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

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

} 
}