Javascript-форум (https://javascript.ru/forum/)
-   Общие вопросы Javascript (https://javascript.ru/forum/misc/)
-   -   Помогите оптимизировать jquery-код (https://javascript.ru/forum/misc/64486-pomogite-optimizirovat-jquery-kod.html)

рони 15.08.2016 18:07

Цитата:

Сообщение от Stay_Strong
браузер ругается на строку

значит вы изменили место input у себя в html

Stay_Strong 15.08.2016 18:10

Цитата:

Сообщение от рони (Сообщение 425521)
значит вы изменили место input у себя в html

Понял, между ними еще есть один див просто. Он был изначально, просто он не нужен был, я его не давал.
<div class="product-cart__price">Цена: 
 <span class="price-val" data-price="890,821,751,709,695,688">890</span>
<div class="product-cart__note"> 
<span>В зависимости от количества цена может изменяться</span>
</div>
<div class="product-cart__number number"><span class="minus">&ndash;</span>
<input class="count" type="text" value="1"><span class="plus">+</span>
</div>
<div class="product-cart__buy"> <span>Заказать</span></div>

рони 15.08.2016 18:17

Stay_Strong,
если есть проблема, нужен полный html

Stay_Strong 15.08.2016 18:24

Цитата:

Сообщение от рони (Сообщение 425526)
Stay_Strong,
если есть проблема, нужен полный html

Полный HTML:
<div class="product-cart__price">Цена: 
 <span class="price-val" data-price="890,821,751,709,695,688">890</span>
<div class="product-cart__note"> 
<span>В зависимости от количества цена может изменяться</span>
</div>
<div class="product-cart__number number"><span class="minus">&ndash;</span>
<input class="count" type="text" value="1"><span class="plus">+</span>
</div>
<div class="product-cart__buy"> <span>Заказать</span></div>

Вот этот кусок кода не позволяет правильно взять count
<div class="product-cart__note"> 
<span>В зависимости от количества цена может изменяться</span>
</div>

рони 15.08.2016 18:32

Цитата:

Сообщение от Stay_Strong
Полный HTML:

не хватает тега

рони 15.08.2016 18:33

Stay_Strong,
var next = $(".product-cart__number",el);

рони 15.08.2016 18:35

Stay_Strong,
<!DOCTYPE html>

<html>
<head>
  <title>Untitled</title>
  <meta charset="utf-8">
  <style type="text/css">
  </style>
  <script src="https://ajax.googleapis.com/ajax/libs/jquery/1.12.4/jquery.min.js"></script>
  <script>
$(function() {
    $(".product-cart__price").each(function(indx, el) {
        var pr = $(".price-val", el);
        var data = pr.data("price");
        var next = $(".product-cart__number",el);
        var count = $(".count", next)[0];
        var num = +count.value;
        next.on("click", ".minus, .plus", function() {
            num += $(this).is(".minus") ? -1 : 1;
            num < 0 && (num = 0);
            count.value = num;
            var price = data[0];
            if (num >= 20) price = data[1];
            if (num >= 50) price = data[2];
            if (num >= 100) price = data[3];
            if (num >= 500) price = data[4];
            if (num >= 1000) price = data[5];
            pr.text(num * price)
        })
    })
});
  </script>
</head>

<body>
<div class="product-cart__price">Цена:
 <span class="price-val" data-price="[890,821,751,709,695,688]">890</span>
<div class="product-cart__note">
<span>В зависимости от количества цена может изменяться</span>
</div>
<div class="product-cart__number number"><span class="minus">&ndash;</span>
<input class="count" type="text" value="1"><span class="plus">+</span>
</div>
<div class="product-cart__buy"> <span>Заказать</span></div>
</div>

</body>
</html>

Stay_Strong 15.08.2016 18:37

Цитата:

Сообщение от рони (Сообщение 425531)
Stay_Strong,
var next = $(".product-cart__number",el);

Почему не хватает тэга, все на месте:
<div class="product-cart__price">Цена: 
      <span class="price-val" data-price="890,821,751,709,695,688">890</span>
      <span class="ruble"> руб.</span></div>
    <div class="product-cart__note"> 
      <span>В зависимости от количества цена может изменяться</span>
    </div>
    <div class="product-cart__number number"><span class="minus">&ndash;</span>
      <input class="count" type="text" value="1"><span class="plus">+</span>
    </div>
    <div class="product-cart__buy"> <span>Заказать</span></div>

рони 15.08.2016 18:45

Stay_Strong,
тогда
var next = $(".product-cart__number").eq(indx);

warren buffet 15.08.2016 23:10

рони, вдумайся в что ты пишешь:

if (num >= 20) price = data[1];
if (num >= 50) price = data[2];
if (num >= 100) price = data[3];
if (num >= 500) price = data[4];
if (num >= 1000) price = data[5];


браузер, не вспотеет, конечно, но когда num у тебя 1000 или больше, то выполняются тотально все условия. То есть это не код, а хак.

Ну и самая мякотка, что ТС ниасилил передачу данных без хтмля и уже сейчас накинул на себя удавку. Когда ему начальство скажет поменять скидки, на отдельно взятые или группы товаров, у него все волосы из носа вылезут от ужаса. И придется ему делать как дядя уоррен баффет прописал.

ЗЫ Причем начальство само зависит от коньюктуры, попросту от конкурентов. Конкуренты нарисуют скидку за 150, ТС полезет в свою Модиксную админку, опа, а хрена-то количество не передается в скрипт. Попух. Один специалист хакает, второй хардкодит данные из БД, молодцы, чо, спелись. Но свободный рынок вас научит как свободу любить.


Часовой пояс GMT +3, время: 09:27.