Вы здесь

Помогите отрефакторить jQuery код

-3
jQuery(document).ready(function(){
$("#line-item-fields-field-cveta").on('change', function(){
switch($(this).val()){

case '38':
$('#38').css('display','block');
$('#39').css('display','none');
$('#40').css('display','none');
$('#41').css('display','none');
$('#42').css('display','none');
$('#54').css('display','none');
$('#60').css('display','none');
$('#61').css('display','none');
$('#70').css('display','none');
break;

case '40':
$('#38').css('display','none');
$('#39').css('display','none');
$('#40').css('display','block');
$('#41').css('display','none');
$('#42').css('display','none');
$('#54').css('display','none');
$('#60').css('display','none');
$('#61').css('display','none');
$('#70').css('display','none');
break;

вот такая портянка на jQuery получается
Это как-то оптимизировать можно?
А то выбор цвета - около 20 вариантов

в каждом case - только один соответствующий 'display','block' - все остальные 'display','none'

Версия Drupal: 
7.x
Категория: 
Javascript
Вопрос задан 12.10.2015 - 10:44
Аватар пользователя Pavel
Pavel
-47

Ответы

5
(function ($) {
  Drupal.behaviors.colorBehavior = {
    attach: function (context, settings) {
      $(function () {
        $("#line-item-fields-field-cveta").on('change', function () {
          var value = $(this).val();
          $('#' + value).css('display', 'block');
          // Здесь selector заменить на нужный для общего контейнера всех айдишников
          $(selector).not('#' + value).css('display', 'none');
          // Либо то же самое с использованием siblings()
          $('#' + value).siblings().css('display','none');
        });
      });
    }
  };
})(jQuery);
Ответ дан 12.10.2015 - 11:34
Аватар пользователя drupby
drupby
456

Спасибо! сама идея в варианте цвета сумки без значения по умолчанию - при выборе опции - меняется картинка. option value="_none" почему-то само по себе не работает

Комментарий оставлен 17.10.2015 - 03:06
0

Если все элементы имеют одного родителя("братья"), то можно так:

$(function() {
  $("#line-item-fields-field-cveta").on('change', function() {
var value = $(this).val() ;
$('#' . value).css('display','block');
$('#' . value).siblings().css('display','none');
  });
});
Ответ дан 12.10.2015 - 13:23

чего-то не заводится... ))

Какой именно скрипт не работает и подключен ли вообще скрипт? Что говорит консоль? Как скрипт подключается?

Комментарий оставлен 12.10.2015 - 16:58

Уже и версию jQuery с 10 пробовал менять на 1.9.1

Комментарий оставлен 16.10.2015 - 20:58