Подгрузка select и работа с ними после!
Здравствуйте! Завалился на самом простом! Перед подгрузкой данных удаляю все элементы в select
$('.InputNoteOption select[name=action] option').remove();
Далее подгружаю в select новые данные так:
$.getJSON('note/get_json_action/pid/'+note.dataID.note,function(data){
$.each(data,function(i,item){
$('.InputNoteOption select[name=action]').append($('<option></option>').attr('value', item.id).text(item.nameRus));
})
})
А далее пытаюсь получить value с того option что сейчас выбран в select но в итоге получаю undefined потому как он вроде бы и не выделен... И витоге выходит что я не могу получить загруженные данные в этот select
alert($('.InputNoteOption select[name=action] option:first').val()); // undefined
alert($('.InputNoteOption select[name=action] option:selected').val()); // undefined
Что я делаю не так? |
теоритически это должно работать
могу предложить попробывать задавать value не с помощью .attr а с помощью .val либо создавать элемент option уже с атрибутом value (и с текстом за одно)
function(data) {
$(".InputNoteOption select[name='action']").empty().append(function(index, html) {
var htmlNew = "";
$.each(data, function(index, value) {
htmlNew += '<option value="'+value.id+'">'+value.nameRus+'</option>';
});
return htmlNew;
});
}
|
Насколько я понял методы такие как load, getJSON, ajax выполняются асинхронно.. У них есть callback функции вот именно в этих функциях можно спокойно обращаться к полученным данным.. А иначе мы действительно обращаемся к тем данным которые еще не получили...
Ну и еще один вопрос на будущее.. Как мне составить правильно селектор что бы к option можно было обращаться зная содержимое его value??? |
я и приводил пример callback`а
а запросы можно выполнять синхронно (за это отвечает опция async которая просто поумолчанию равна true, тоесть поумолчанию асинхронно) поповоду селектора если если речь идет про атрибут value то так: $("select option[value='123']") |
| Часовой пояс GMT +3, время: 16:39. |