Показать сообщение отдельно
  #1 (permalink)  
Старый 15.08.2016, 13:24
Аватар для Stay_Strong
Аспирант
Отправить личное сообщение для Stay_Strong Посмотреть профиль Найти все сообщения от Stay_Strong
 
Регистрация: 14.10.2015
Сообщений: 37

Помогите оптимизировать jquery-код
Всем доброго времени суток. Суть такова. Я очень начинающий. Пишу изменение цены при нажатии на "плюс", "минус" и изменении значения мышью в инпуте. В результате написал рабочий код, в котором каждый раз завожу переменные одни и те же. Вот код целиком, без кнопки "минус":
//Изменение цены при нажатии на "плюс"
  $('.plus').click(function () {
      var input = $(this).parent().find('input');
      var priceValOne = $(this).parents('.catalog-part__text, .product-cart__text').find('.price-val').attr('data-price_1_20');
      var priceValTwo = $(this).parents('.catalog-part__text, .product-cart__text').find('.price-val').attr('data-price_20_50');
      var priceValThree = $(this).parents('.catalog-part__text, .product-cart__text').find('.price-val').attr('data-price_50_100');
      var priceValFour = $(this).parents('.catalog-part__text, .product-cart__text').find('.price-val').attr('data-price_100_500');
      var priceValFive = $(this).parents('.catalog-part__text, .product-cart__text').find('.price-val').attr('data-price_500_1000');
      var priceValSix = $(this).parents('.catalog-part__text, .product-cart__text').find('.price-val').attr('data-price_more_1000');
      var price = $(this).parents('.catalog-part__text, .product-cart__text').find('.price-val');
      input.val(parseInt(input.val()) + 1); //увеличиваем значение input на 1
      var newInput = input.val(); //Забираем увеличенное значение
      //Вывод цены в зависимости от количества товара
        if (newInput < 20) {
          price.text(parseInt(newInput) * parseInt(priceValOne));
        };
        if (newInput >= 20 && newInput < 50) {
          price.text(parseInt(newInput) * parseInt(priceValTwo));
        };
        if (newInput >= 50 && newInput < 100) {
          price.text(parseInt(newInput) * parseInt(priceValThree));
        };
        if (newInput >= 100 && newInput < 500) {
          price.text(parseInt(newInput) * parseInt(priceValFour));
        };
        if (newInput >= 500 && newInput < 1000) {
          price.text(parseInt(newInput) * parseInt(priceValFive));
        };
        if (newInput >= 1000) {
          price.text(parseInt(newInput) * parseInt(priceValSix));
        };
      //окончание секции "Вывод цены в зависимости от количества товара""
      return false;
  });
 //Отслеживаем изменение инпута при помощи мыши, и меняем цену
 $('.number input').change(function(){
 	var inputVal = $(this).val();
  var priceValOne = $(this).parents('.catalog-part__text, .product-cart__text').find('.price-val').attr('data-price_1_20');
  var priceValTwo = $(this).parents('.catalog-part__text, .product-cart__text').find('.price-val').attr('data-price_20_50');
  var priceValThree = $(this).parents('.catalog-part__text, .product-cart__text').find('.price-val').attr('data-price_50_100');
  var priceValFour = $(this).parents('.catalog-part__text, .product-cart__text').find('.price-val').attr('data-price_100_500');
  var priceValFive = $(this).parents('.catalog-part__text, .product-cart__text').find('.price-val').attr('data-price_500_1000');
  var priceValSix = $(this).parents('.catalog-part__text, .product-cart__text').find('.price-val').attr('data-price_more_1000');
 	var price = $(this).parents('.catalog-part__text, .product-cart__text').find('.price-val');
  if (inputVal < 20) {
 	  price.text(inputVal * parseInt(priceValOne));
  };
   if (inputVal >= 20 && inputVal < 50) {
    price.text(inputVal * parseInt(priceValTwo));
  };
  if (inputVal >= 50 && inputVal < 100) {
    price.text(inputVal * parseInt(priceValThree));
  };
  if (inputVal >= 100 && inputVal < 500) {
    price.text(inputVal * parseInt(priceValFour));
  };
  if (inputVal >= 500 && inputVal < 1000) {
    price.text(inputVal * parseInt(priceValFive));
  };
  if (inputVal >= 1000) {
    price.text(inputVal * parseInt(priceValSix));
  };
 });

Вот это все нужно как-то максимально оптимизировать. Я не прошу, дублировать или писать за меня. Если можно, то подойдет даже ссылка на информацию, как правильно оптимизировать код. Или совсем маленький кусочек отсюда оптимизировать и дать пару комментариев. Пожалуйста, отзовитесь люди добрые..
Ответить с цитированием