我对此代码有疑问:
$(function () {
$('#city_input').autocomplete({
onSelect: function (suggestion) {
alert(suggestion.data);
window.latlng = suggestion.data;
}
});
$('#fs_input').autocomplete({
params: { "latlng" : window.latlng, "latlng2" : '99.9999,-99.9999' },
onSelect: function (suggestion) {
alert(window.latlng);
}
});
});
这是一个自动完成脚本。首先,用户在#city_input上选择一个建议。这样做会设置
window.latlng
的值。接下来,用户需要在#fs_input上选择建议。我遇到的问题是,在“ params”属性中,未设置
"latlng" : window.latlng
属性。仅出于测试目的,我还创建了另一个属性,在代码latlng2
中可以正常运行。另外,在下面,我正在执行alert(window.latlng)
来检查该值,它会警告期望值。所以问题是,为什么没有设置
"latlng" : window.latlng
?也许我不应该将变量传递给对象自由属性? 最佳答案
正在设置。只是在设置时它没有任何价值。
在#city_input
的onSelect
回调触发后,该值不是动态计算的,它是在脚本首次加载时计算一次的,这要早于分配给它的时间。
$('#city_input').autocomplete({
onSelect: function (suggestion) {
alert(suggestion.data);
# you assign here, in a callback that executes some time after the page loads
window.latlng = suggestion.data;
}
});
$('#fs_input').autocomplete({
# however, you *read* the value here, immediately on page load, long before `onSelect` ever runs
# window.latlng is "undefined" at the point `params` is created.
params: { "latlng" : window.latlng, "latlng2" : '99.9999,-99.9999' },
onSelect: function (suggestion) {
alert(window.latlng);
}
});
如果希望在
onSelect
回调中选择的值在autocomplete
中用于其他元素,则需要等待初始化自动完成,直到选择了一个值并实际可用后:$('#city_input').autocomplete({
onSelect: function (suggestion) {
alert(suggestion.data);
window.latlng = suggestion.data;
$('#fs_input').autocomplete({
params: { "latlng" : window.latlng, "latlng2" : '99.9999,-99.9999' },
onSelect: function (suggestion) {
alert(window.latlng);
}
});
}
});
关于javascript - Javascript:将var传递给对象文字,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/29056147/