2015-12-28 3 views
0

Я стараюсь научиться jquery и javascript и написал две разные функции change(), которые являются одинаковыми, но я чувствую, что они могут быть более упорядоченными и комбинированными.Упорядочить две функции вызова функций jquery

Что вы, ребята, думаете, что самый чистый подход здесь?

jQuery(document).ready(function($){ 
          jQuery("#custcolmen_size").change(function() { 
           if($('.stock-message > span:contains("Out of stock")').length){ 
            $(".add2cart-div > input").addClass('disabled').removeClass('cart'); 
            $(".stock-message > span").addClass('alert alert-danger'); 
           } 

           else if($('.stock-message > span:contains("")').length) { 
            $(".add2cart-div > input").removeClass('disabled').addClass('cart'); 
            $(".stock-message > span").removeClass('alert alert-danger'); 
           } 
          }); 


          jQuery("#custcolwomen_width").change(function() { 
           if($('.stock-message > span:contains("Out of stock")').length){ 
            $(".add2cart-div > input").addClass('disabled').removeClass('cart'); 
            $(".stock-message > span").addClass('alert alert-danger'); 
           } 

           else if($('.stock-message > span:contains("")').length) { 
            $(".add2cart-div > input").removeClass('disabled').addClass('cart'); 
            $(".stock-message > span").removeClass('alert alert-danger'); 
           } 
          }); 

         }); 

ответ

0

В логике обоих обработчиков то же самое вы можете соединить два селекторы вместе с запятой, например:

jQuery(document).ready(function($) { 
    jQuery("#custcolmen_size, #custcolwomen_width").change(function() { 
     if ($('.stock-message > span:contains("Out of stock")').length){ 
      $(".add2cart-div > input").addClass('disabled').removeClass('cart'); 
      $(".stock-message > span").addClass('alert alert-danger'); 
     } 
     else if ($('.stock-message > span:contains("")').length) { 
      $(".add2cart-div > input").removeClass('disabled').addClass('cart'); 
      $(".stock-message > span").removeClass('alert alert-danger'); 
     } 
    }); 
}); 
+0

Проблема я имею сейчас, если вы выбираете размер первого тогда ширина и товар нет в наличии, он отлично работает. но если вы почему-то сначала выбираете ширину, а затем размер не работает. – gx2g

+0

Обычно мы выбираем выпадающие списки сверху вниз, но что, если мы выберем их снизу вверх? – gx2g

+0

Я не вижу, как порядок событий имеет значение, поскольку ваш исходный пример работает с одним и тем же кодом в обоих случаях. Логично это ничем не отличается. Не могли бы вы привести пример кода в http://jsfiddle.net, чтобы я мог видеть, как он работает. –

Смежные вопросы