0
我必須錯過簡單的東西,但我真的不知道是什麼。我不是JS老手,所以這可能是一個簡單的答案 - 確實希望如此:)。全局JavaScript變量不能在jQuery變化事件中訪問
我有一個按鈕,單擊它時會獲取JSON數據。當更改下拉列表時,我檢查是否有數據,如果有,我想清除它,因爲下拉列表指示單擊按鈕時要檢索哪些數據。
代碼:
var selected, $locDialog;
var locations = [];
$(function() {
// Save the selected Name
selected = $("#selected option:selected").val();
// Setup Dialog for Locations
$locDialog = $('#location-dialog').dialog({
autoOpen: false
});
// If user changes the selected
// 1. Prompt for confirmation
// 2. If users confirms, clear data
$('#selected').change(function() {
if (locations) {
var confirmed = confirm("Oh Rly?");
if (confirmed) {
// Clear data
var locations;
}
}
});
// When user clicks "Location" Button..
$('.loc-select button').click(function() {
if (!locations) {
$.getJSON("/Controller/JSONAction", { selectedId: selected, pageNum: 1, pageSize: 100 }, function(data) {
locations = data;
$.each(locations, function(index, loc) {
var $tr = $('<tr/>')
.append($('<td/>')
.append('<input type="checkbox" name="TEST-'+index+'" value="'+loc.Id+'"/>'))
.append('<td>' + loc.Name + '</td>');
$("#location-dialog table tbody").append($tr);
});
});
}
$locDialog.dialog('open');
return false;
});
});
這裏的東西,在.click(...)
回調裏面,我可以看到locations
是[]
。現在,當我在.change(...)
回撥時,我看到locations
是undefined
。
任何幫助/見解,一如既往,是讚賞!
謝謝德魯:)。問題:回調中的var位置不會立即執行,是嗎?我想這就是爲什麼我從來沒有想過改變這一點。我知道這很簡單! – Dan 2010-03-19 17:52:56