0

Я использую плагин jquery selectmenu для отображения меню выбора стиля. У меня есть три меню выбора, все опции скрыты в последних двух меню, когда вы выбираете опцию из меню 1, она показывает соответствующие параметры в меню два. То же самое происходит в меню с двумя-тремя. Без плагина selectmenu это отлично работает. К сожалению, с помощью плагина select menu он исчезает и не появляется снова.hide/show option in select using jQuery UI selectmenu

DEMO http://jsfiddle.net/GXtpC/1525/

$(function(){    
    $('select').selectmenu({ 
     style:'popup' 
    }); 

    $('.select1').on('change', function() { 
     var parentId = $(this).children(":selected").attr("id"); 
     $('.all-opt').hide(); 
     $('.' + parentId).show(); 
    }); 
    $('.select2').on('change', function() { 
     var parentIdReg = $(this).children(":selected").attr("data-id"); 
     $('.select3-option').hide(); 
     $('.' + parentIdReg).show(); 
    }); 

}); 

Полностью работает без JQuery плагин selectmenu

DEMO http://jsfiddle.net/GXtpC/1526/

+0

Это происходит потому, что виджет 'selectmenu' заменяет большую часть вашего html (включая атрибуты' id' и 'data-id'). Это ожидаемое поведение. Как вы пытались обойти это и какие у вас проблемы с этим? (примечание стороны: 'style' не является допустимым вариантом) – blgt

+0

Вы можете найти новый добавленный элемент, когда он имеет id. Например, если у вас есть '$ ('# myspecialselect'). Selectmenu();', новый элемент '$ (" # myspecialselect-menu ")' – Fanky

ответ

0

Я не знаком с selectmenu() виджета, но я могу указать точку на некоторые вещи, чтобы отметить. Изменение кода немного, похоже, после вызова selectmenu(), это делает вызов hide() не представляется возможным:

$(function(){    
    $('.select1').selectmenu(); 
    $('.select3').selectmenu(); 

    $('.select2').hide(); <---- hidden 
    $('.select3').hide(); <---- not hidden 
/* 
    $('.select1').on('change', function() { 
     ... 
     ... 
    */ 
}); 

Кроме того, небольшая опечатка в виде вызвала

SELECT OPTION 1 
SELECT OPTION 1 
SELECT OPTION 3 

Я предполагаю, что это должно быть 1 , 2 и 3?

+1

Это происходит из-за 'selectmenu', заменяющего элемент' select' элемент 'div' и уничтожение' class' в процессе; это не 'hide()', который виноват, но селектор ничего не соответствует – blgt

+0

Я все еще пытаюсь найти решение. –

0

Используйте следующий код:

// init 
var mySelect = $("#my-select").selectmenu(); 

// hide 
mySelect.selectmenu('close'); 
mySelect.widget().hide(); 

// show 
mySelect.widget().show(); 
0

у меня была аналогичная проблема, которую я решил вызова

$("#original_select_id").selectmenu("refresh");

У меня был код, который удален или прилагаемую выбора параметров, основанные на выборе другого выбора. У IE возникают проблемы с методом show/hide для выбора параметров, поэтому вместо этого я использую метод remove/append (возможно, это необходимо для предоставленного кода для решения этой проблемы).

С помощью этого кода, выполненного после внесения изменений в исходный элемент выбора, пользовательский интерфейс jQuery «переинициализируется» сам и содержит только опции, которые были добавлены/не удалены «на лету».