У меня есть веб-страница с различными элементами (списком ссылок и двумя полями выбора), связанными между ними. Нажатие на них может повлиять на один из других элементов, и все их значения способствуют обновлению значения, отображаемого на странице.
Итак, код такой:
$(document).ready(function() {
var someVar = '';
$("select#size").bind('change', function() {
someVar = $(this).val();
console.log('first');
});
my_change();
console.log('second' + someVar);
});
function my_change() {
$.getJSON("photos/change_product", {json_stuff}, function(data) {
var options = [];
for (var i = 0; i < data.length; i++) {
options.push('<option value="' + data[i].id + '">' + data[i].label + '</option>');
}
$("select#size").trigger('change');
$("select#options").html(options.join('')).trigger('change');
})
};
};
Когда я загружаю страницу, вызывается функция my_change
. Он делает некоторые вещи, а затем вызывает change event
в поле выбора. Мне нужно обновить значение, используя то, что находится внутри этого поля выбора, и только затем позволить продолжить выполнение. Так что мне нужен этот код, чтобы напечатать «first», а затем «second» со значением переменной. Что на самом деле происходит, так это то, что он печатает «второй» «первый».
Я думаю, это потому, что я делаю асинхронные вызовы. Что я могу сделать?