使用加号和减号的数量增加jQuery不起作用

时间:2013-10-25 08:48:22

标签: jquery html css

您好我正在使用jQuery创建一个输入数字增量,但没有成功,请您查看我的代码并给我一个正确的指导

SEE THE DEMO HERE

HTML

<div class="sp-quantity">
    <div class="sp-minus fff"> <a class="ddd" href="#">-</a></div>
    <div class="sp-input">
        <input type="text" class="quntity-input" value="1">
    </div>
    <div class="sp-plus fff"> <a class="ddd" href="#">+</a></div>
</div>

JS

$(".ddd").on("click", function () {

    var $button = $(this);
    var oldValue = $button.parent().find("input .quntity-input").val();

    if ($button.text() == "+") {
        var newVal = parseFloat(oldValue) + 1;
    } else {
        // Don't allow decrementing below zero
        if (oldValue > 0) {
            var newVal = parseFloat(oldValue) - 1;
        } else {
            newVal = 0;
        }
    }

    $button.parent().find("input .quntity-input").val(newVal);

});

3 个答案:

答案 0 :(得分:9)

查找输入的选择器不正确。 .quntity-input.sp-quantity的孩子,比DOM中的按钮高两级,因此您需要将closest()与选择器一起使用,而不是parent。试试这个:

$(".ddd").on("click", function () {

    var $button = $(this);
    var oldValue = $button.closest('.sp-quantity').find("input.quntity-input").val();

    if ($button.text() == "+") {
        var newVal = parseFloat(oldValue) + 1;
    } else {
        // Don't allow decrementing below zero
        if (oldValue > 0) {
            var newVal = parseFloat(oldValue) - 1;
        } else {
            newVal = 0;
        }
    }

    $button.closest('.sp-quantity').find("input.quntity-input").val(newVal);

});

Example fiddle

您还可以简化代码:

&#13;
&#13;
$(".ddd").on("click", function() {
  var $button = $(this);
  var $input = $button.closest('.sp-quantity').find("input.quntity-input");

  $input.val(function(i, value) {
    return +value + (1 * +$button.data('multi'));
  });
});
&#13;
.sp-quantity div { display: inline; }
&#13;
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<div class="sp-quantity">
  <div class="sp-minus fff"><a class="ddd" href="#" data-multi="-1">-</a></div>
  <div class="sp-input">
    <input type="text" class="quntity-input" value="1" />
  </div>
  <div class="sp-plus fff"><a class="ddd" href="#" data-multi="1">+</a></div>
</div>
&#13;
&#13;
&#13;

答案 1 :(得分:3)

您输入的选择器应为

$button.closest('.sp-quantity').find("input.quntity-input")

演示:Fiddle

答案 2 :(得分:2)

这是你的意思吗?

Fiddle here

    $('.sp-plus').on('click', function(){
        var oldVal = $('input').val();
        var newVal = (parseInt($('input').val(),10) +1);
      $('input').val(newVal);
    });

    $('.sp-minus').on('click', function(){
        var oldVal = $('input').val();
        if (oldVal > 0)
        {
            var newVal = (parseInt($('input').val(),10) -1);
        }
        else
        {
            newVal = 0;
        }
        var newVal = (parseInt($('input').val(),10) -1);
        $('input').val(newVal);
    });