2013-12-23 4 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; он должен выйти из функции и возвращает истинное значение. Тем не менее, он продолжает итерации.

Почему это так? return в JavaScript не работает как возврат в Java ??

+0

Пожалуйста, убедитесь, что условие выполнено, и оператор предупреждения выполнен. –

+4

В следующий раз прочитайте [документацию] (http://api.jquery.com/each/) ... – kapa

+1

Я думаю, вы должны использовать «return false»; вместо «return true»; разбить петлю –

ответ

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 рассматривается как continue и return false, как break в $.each loop,

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

Fro м $.each()

Мы можем разорвать $ .each() петли на определенной итерации, сделав функцию обратного вызова возвращают ложь. Возврат не-false - это то же самое, что и инструкция continue в цикле for; он немедленно перейдет к следующей итерации .

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 ложь вырваться из $ .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

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

for(i in x){ 

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

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

} 
} 
Смежные вопросы