jQuery ui.selectmenu не заполняется - PullRequest
1 голос
/ 07 июня 2011

Я работал над панелью управления, используя jquery ui, и наткнулся на ui.selectmenu.js для преобразования скучных html-меню выбора в jquery ui look 'n' feel select menu, но у меня возникли некоторые проблемы, связанные сне загружать содержимое моего списка выбора.

Я протестировал реализацию, используя предварительно заполненные параметры для списка выбора, и они отображаются в правильном меню ui.select.Однако, кажется, что когда я пытаюсь заполнить список параметров на лету, возникает проблема со списком - он пуст!

        $(document).ready(function(){
            jQuery(function($){
            $.getJSON('src/versions.php', function(data) {
                $.each(data, function(key, val){
                        $('<option/>').attr('value', val.version)
                        .html(val.version)
                        .appendTo('select#release_id');
                    });
                });
            });

        $('select#release_id').selectmenu({
            style:'dropdown',
            width: 250,
            maxHeight: 500
        });

Приведенный выше код возвращает список значений json и добавляет ихправильно в список опций.Это можно наблюдать из firebug при просмотре HTML-кода.Когда я сравниваю этот код с предварительно заполненным списком, опять же с ui.selectmenu, появляется небольшая разница - ui.selectmenu обновляет элемент значения select;это не происходит при использовании кода выше.

В целом, я считаю, что это проблема синхронизации, я просто не уверен, как проверить или предотвратить загрузку кода в неправильном порядке.

Любое руководство будет оценено.

Спасибо!

1 Ответ

0 голосов
/ 07 июня 2011

Добавить / Удалить / Изменить параметры

В соответствии с этими документами: Github jQuery UI Меню выбора , каждый изменяет параметры в пределах своего пользовательского меню, добавляя / удаляя / изменяя параметры в исходном выборе, затем снова вызывая $('#select').selectmenu();.

Возможно переименовать опцию или даже добавить один в selectmenu. Просто изменить исходный элемент выбора и применить selectmenu() к нему: $('select').selectmenu();

Пример

$(document).ready(function(){

    var select_menu = 'select#release_id';

    var init_select = function(selector) {
        $(select_menu).selectmenu({
            style:'dropdown',
            width: 250 ,
            maxHeight: 500
        });
    };

    jQuery(function($){
        $.getJSON('src/versions.php', function(data) {

            // Don't want to init_select more than once per AJAX request
            var count = data.length;
            $.each(data, function(key, val){
                $('<option/>').attr('value', val.version)
                    .html(val.version)
                    .appendTo(select_menu);
                });

                // Second initialization, using extra options AJAX'd in
                if (--count == 0) init_select(select_menu);
            });
        });

        // First initialization, using whatever options present at page-load
        init_select(select_menu);
});
...