Javascript-форум (https://javascript.ru/forum/)
-   jQuery (https://javascript.ru/forum/jquery/)
-   -   Подгрузка select и работа с ними после! (https://javascript.ru/forum/jquery/14172-podgruzka-select-i-rabota-s-nimi-posle.html)

BASSON_XVI 04.01.2011 09:22

Подгрузка 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

Что я делаю не так?

chosen 05.01.2011 18:27

теоритически это должно работать
могу предложить попробывать задавать 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;
    });
}

BASSON_XVI 06.01.2011 20:44

Насколько я понял методы такие как load, getJSON, ajax выполняются асинхронно.. У них есть callback функции вот именно в этих функциях можно спокойно обращаться к полученным данным.. А иначе мы действительно обращаемся к тем данным которые еще не получили...

Ну и еще один вопрос на будущее.. Как мне составить правильно селектор что бы к option можно было обращаться зная содержимое его value???

chosen 07.01.2011 11:28

я и приводил пример callback`а
а запросы можно выполнять синхронно (за это отвечает опция async которая просто поумолчанию равна true, тоесть поумолчанию асинхронно)

поповоду селектора если если речь идет про атрибут value то так:
$("select option[value='123']")


Часовой пояс GMT +3, время: 12:58.