2016-09-30 129 views
-2

我很困惑我的功能在JQuery的行爲。事情是,is_airport函數決定,該位置是否是使用機場JSON的機場。JQuery返回true後返回false?

一切似乎工作正常,JSON被正確解析等。正如你可以看到有一個循環用於檢測,destination_id是否在機場的JSON密鑰。它是。 它提醒'OK',但返回false而不是true

如果有AJAX而不是each函數,我會期待這種行爲,因爲異步。但爲什麼發生在這裏?

function is_airport(destination_id){ 
    var json_storage = $("#locations-json"); 
    var airports = JSON.parse(json_storage.attr("data-airports")); 
    $.each(airports,function(id,name){ 
     console.log(id,destination_id,name); 
     if (id==destination_id){ 
      alert('ok'); 
      return true 
     } 
    }); 
    return false 
} 

$(document).ready(function() { 
    console.log(is_airport(5));)} 

你知道問題在哪裏嗎?

+4

您從'$ .each'循環返回true,而不是從包裝函數 –

回答

1

您從$.each循環返回true,它充當continue語句。相反,設置一個標誌返回:

function is_airport(destination_id) { 
    var json_storage = $("#locations-json"); 
    var airports = JSON.parse(json_storage.attr("data-airports")); 
    var toReturn = true; // flag variable 
    $.each(airports, function(id, name) { 
    console.log(id, destination_id, name); 
    if (id == destination_id) { 
     alert('ok'); 
     return toReturn = false; // break each loop btw... 
    } 
    }); 
    return !toReturn; // return !flag 
} 
相關問題