我的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那样起作用
答案 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 true
,return true
被视为continue
而return false
被break
视为$.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循环