Подгрузка 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, время: 04:47. |