Как удалить параметры из меню выбора?

У меня есть три объекта selectmenu в div. Первый загружается со страницей. Когда я выбираю что-то в первом, это значение используется для заполнения второго ... выбор во втором заполняет третье.

Прежде чем я вставлю новые биты в поле, мне нужно очистить старые.

Кажется, не работает - так что я делаю что-то глупое. Нет сообщений об ошибках .. просто нет опорожнения.

firstSelect = $("#first");

$.ajax({
    populate 'first'
});

secondSelect = $("#second");

firstSelect.selectmenu({
    change: function( event, data ) {
        secondSelect.empty();
        getSeconds(data.item.value);
    }
}).selectmenu("menuWidget").addClass('overflow');

thirdSelect = $("third");
secondSelect.selectmenu({
    change: function( event, data ) {
        thirdSelect.empty();
        getThirds(data.item.value);
    }
}).selectmenu( "menuWidget" ).addClass('overflow');
<body>
    <div>
        <select id='first'></select>
        <select id='second'></select>
        <select id='third'></select>
    </div>
</body>

Я тоже пробовал $("#selectId").html("");


Когда вы вызываете
firstSelect = $("#first");

$.ajax({
    populate 'first'
});

secondSelect = $("#second");

firstSelect.selectmenu({
    change: function( event, data ) {
        secondSelect.empty();
        getSeconds(data.item.value);
    }
}).selectmenu("menuWidget").addClass('overflow');

thirdSelect = $("third");
secondSelect.selectmenu({
    change: function( event, data ) {
        thirdSelect.empty();
        getThirds(data.item.value);
    }
}).selectmenu( "menuWidget" ).addClass('overflow');
, он удаляет элементы <body> <div> <select id='first'></select> <select id='second'></select> <select id='third'></select> </div> </body> из базового элемента $("#selectId").html("");, но не обновляет плагин selectmenu автоматически. Вам нужно сделать это вручную, используя параметр $("#selectid").selectmenu("refresh"), например:

Пробовал использовать $("#selectid").selectmenu("refresh") и $("#selectid").empty().selectmenu("refresh") - оба выдают мне эту ошибку, когда я пытаюсь открыть список (щелкнув по нему):

Редактировать:


person ethrbunny    schedule 18.12.2016    source источник
comment
jquery-ui.min.js: 11 Uncaught TypeError: Невозможно прочитать индекс свойства undefined в HTMLUListElement.focus (http://cdnjs.cloudflare.com/ajax/libs/jqueryui/1.12.1/jquery-ui.min.js:11:25160) в t. (анонимная функция). (анонимная функция) ._ trigger (http://cdnjs.cloudflare.com/ajax/libs/jqueryui/1.12.1/jquery-ui.min.js:6:11090) at t. (анонимная функция). (анонимная функция) .focus (http://cdnjs.cloudflare.com/ajax/libs/jqueryui/1.12.1/jquery-ui.min.js:7:27841) в т. (Анонимный функция). (анонимная функция) .focus (http://cdnjs.cloudflare.com/ajax/libs/jqueryui/1.12.1/jquery-ui.min.js:6:4499) at t. (анонимная функция). (анонимная функция ) .open (http://cdnjs.cloudflare.com/ajax/libs/jqueryui/1.12.1/jquery-ui.min.js:11:26239) at t. (анонимная функция). (анонимная функция) .open (http://cdnjs.cloudflare.com/ajax/libs/jqueryui/1.12.1/jquery-ui.min.js:6:4499) at t. (анонимная функция). (анонимная функция) ._ toggle (http://cdnjs.cloudflare.com/ajax/libs/jqueryui/1.12.1/jquery-ui.min.js:11:28018) at t. (анонимная функция). (анонимная функция) ._ toggle (http://cdnjs.cloudflare.com/ajax/libs/jqueryui/1.12.1/jquery-ui.min.js:6:4499) в t. (анонимная функция). (анонимная функция) .click (http://cdnjs.cloudflare.com/ajax/libs/jqueryui/1.12.1/jquery-ui.min.js:11:28578) в HTMLSpanElement.r (http://cdnjs.cloudflare.com/ajax/libs/jqueryui/1.12.1/jquery-ui.min.js:6:9786) focus @ jquery-ui.min.js: 11 _trigger @ jquery-ui.min.js: 6 focus @ jquery-ui.min.js: 7 (анонимно) @ jquery-ui.min. js: 6 open @ jquery-ui.min.js: 11 (анонимно) @ jquery-ui.min.js: 6 _toggle @ jquery-ui.min.js: 11 (анонимно) @ jquery-ui.min.js: 6 щелкните @ jquery-ui.min.js: 11 r @ jquery-ui.min.js: 6 отправка @ jquery.min.js: 3 q.handle @ jquery.min.js: 3   -  person mathmaniac88    schedule 02.08.2018


Ответы (1)


Я также предлагаю вам придерживаться стандартов именования jQuery и помещать символ $ в начало переменных, которые содержат объекты jQuery, например. $firstSelect, $secondSelect и так далее.

secondSelect.empty().selectmenu('refresh');

не могли бы вы добавить, что произошло, когда вы пытались использовать empty()?

person Rory McCrossan    schedule 18.12.2016