jQuery倍数正负计数器

时间:2018-12-16 20:27:35

标签: javascript jquery html css

我想在页面上有多个加/减计数器。

我有一个工作计数器,但想使其通用,以便多个计数器可以具有不同的初始值,并随着单击而增加和减少。

$('.counter-btn').click(function(e) {
    e.preventDefault();
    var $btn = $(this);
    $('.output').html(function(i, val) {
        val = val * 1 + $btn.data('inc');
        return (val <= 0 ? '' : '+') + val;
    });
});
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<button class="counter-btn" id="increase1" type="button" data-inc="1">+</button>
<button class="counter-btn" id="decrease1" type="button" data-inc="-1">-</button>
<div class="output">+30</div>

<hr />


<button class="counter-btn" id="increase1" type="button" data-inc="1">+</button>
<button class="counter-btn" id="decrease1" type="button" data-inc="-1">-</button>
<div class="output">+30</div>

小提琴链接: http://jsfiddle.net/u2Lh7dbp/

谢谢

2 个答案:

答案 0 :(得分:2)

每个输出元素应该是唯一的,以便可以自己调用。

$('.counter-btn').click(function(e) {
        e.preventDefault();
        var $btn = $(this);
        $('#output-' + $btn.data('index')).html(function(i, val) {
            val = val * 1 + $btn.data('inc');
            return (val <= 0 ? '' : '+') + val;
        });
    });
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<button class="counter-btn" id="increase1" type="button" data-index="1" data-inc="1">+</button>
<button class="counter-btn" id="decrease1" type="button" data-index="1" data-inc="-1">-</button>
<div class="output" id="output-1">+30</div>

<hr />

<button class="counter-btn" id="increase2" type="button" data-index="2" data-inc="1">+</button>
<button class="counter-btn" id="decrease2" type="button" data-index="2" data-inc="-1">-</button>
<div class="output" id="output-2">+30</div>

我添加了一个新的数据属性:index。您可以使用该索引通过ID指定要查找的确切输出元素。

答案 1 :(得分:1)

简单起见,您可以拥有两个函数,并将onClick回调直接与这些函数相关联,从而使它在html方面更加清晰。

function add(id) {
    var newCount = parseInt($(id).text()) + 1;
    $(id).text(newCount);
}

function substract(id) {
    var newCount = parseInt($(id).text()) - 1;
    $(id).text(newCount);
}
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<button type="button" onclick="add('#output1')">+</button>
<button type="button" onclick="substract('#output1')">-</button>
<div id="output1">30</div>

<hr />

<button type="button" onclick="add('#output2')">+</button>
<button type="button" onclick="substract('#output2')">-</button>
<div id="output2">30</div>