2016-09-30 159 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 
} 
相关问题