Как сделать элемент видимым или нет с помощью тега выбора?

0

Я попытаюсь объяснить проблему. У меня есть этот выбор в html:

<select id="seasons" multiple="multiple">
    <option value="s01">Stagione 1</option>
    <option value="s02">Stagione 2</option>
    <option value="s03">Stagione 3</option>
    <option value="s04">Stagione 4</option>
    <option value="s08">Stagione 8</option>
</select>

Таким образом, вы можете увидеть несколько вариантов. Теперь я должен проверить, что выбран и отображать только выбранный элемент, а те, которые не выбраны, должны быть скрыты.

Элемент, который я должен показать или скрыть, имеет класс, равный значению этой опции (элемент это таблица):

<table class="s01">
  ...
</table>
Теги:
select
option

3 ответа

2
Лучший ответ

.val() для multiple элементов выбора возвращает массив выбранных значений, вы можете .join() значения и фильтровать таблицы с помощью сгенерированного селектора.

$('#seasons').on('change', function() {
    var selector = this.selectedIndex > -1 ? '.' + $(this).val().join(',.') : null;
    $('table').hide().filter(selector).show();
});

http://jsfiddle.net/Frm5a/

  • 0
    Я не могу голосовать за вас, но я бы действительно сделал это, потому что вы помогли мне с этой функцией. Я добавляю только $ ('table'). Hide (); скрыть все таблицы до этой функции. Во всяком случае, я буду изучать это, спасибо большое!
  • 0
    @GiacomoCerquone Добро пожаловать.
Показать ещё 1 комментарий
2

попробуй это

  $(function(){
  $('table').hide(); //<--this hides all the table
  $('#seasons').change(function(){
      $.each($(this).val(),function(i,v){
         $('.'+v).show();
      }
 });
 });

так как $('table').hide(); скрывает всю таблицу, присутствующую в документе... вы можете добавить тот же класс к определенным таблицам, который вы хотите скрыть, и использовать селектор классов $('.tableClass').hide()..

0

Вы можете добавить класс s ко всем целевым элементам вместе с классом sxx затем

<table class="s s02">
    <tr>
        <td>01</td>
    </tr>
</table>

тогда

var $els = $('.s').hide();
$('#seasons').change(function () {
    var selected = $(this).val(),
        $sel;
    if (selected && selected.length > 0) {
        $sel = $els.filter('.' + selected.join(', .')).show();
        $els.not($sel).hide();
    } else {
        $els.hide();
    }
})

Демо: скрипка

Ещё вопросы

Сообщество Overcoder
Наверх
Меню