у меня была головная боль отладки следующий код:Html код, сгенерированный JQuery не доступен
Презентация
Если я запускаю следующий код:
$.get('/api/Customer/1', function(data){
projects = data.data.projects;
var $el = $('#mySelect');
$el.empty();
projects.forEach(function(element, index, array){
var text = element.name;
addSelectOption("mySelect", element.idProject, text);
});
});
/**
* Function which add an option to the select input which id is idSelect.
*/
function addSelectOption(idSelect, value, text)
{
var option =
$('<option></option>').attr("value", value).text(text);
$('#' + idSelect).append(option);
}
Мой выбор будет выглядеть следующим образом:
<select id="mySelect">
<option value="1">proj1</option>
<option value="2">proj2</option>
<option value="3">proj3</option>
<option value="4">proj4</option>
</select>
Отказ
Итак, если я добавляю следующую строку после моего АЯКС код:
$('#mySelect').val("2");
Мой выбор должен отображать proj2. Но это не так.
Успех
Единственный способ я нашел, чтобы сделать его работы следующий код:
$.get('/api/Customer/1', function(data){
projects = data.data.projects;
var $el = $('#mySelect');
$el.empty();
projects.forEach(function(element, index, array){
var text = element.name;
addSelectOption("mySelect", element.idProject, text);
});
$('#mySelect').val("2");//the only change between the presentation code
});
Похоже, что HTML, порожденного JQuery имеет область, которая является запрос прибудете Аякса.
Вопрос
Я не понимаю, почему первый код не установить выбранное значение mySelect для proj2. Вы можете объяснить это мне, пожалуйста?
Что делает 'addSelectOption' ?? –
ВСЕ AJAX, не настроенные на синхронизацию, работают так - это A для асинхронных операций. Это не просто jQuery – mplungjan
@MilindAnantwar. Я редактировал вопрос, чтобы добавить код этой функции. – Moebius