我对JQuery
中的函数行为感到困惑。问题在于is_airport
函数决定了该位置是否是使用JSON机场的机场。
一切似乎都正常工作,JSON被正确解析等等。正如您所看到的,有一个用于检测的循环,destination_id
是否在机场JSON密钥中。它是。 提醒'确定' 但返回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));)}
你知道问题出在哪里吗?
答案 0 :(得分:1)
您从true
循环返回$.each
,它充当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
}