【问题标题】:jQuery multiple plus/minus CounterjQuery 多个加/减计数器
【发布时间】:2018-12-16 20:27:34
【问题描述】:

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

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

$('.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/

谢谢

【问题讨论】:

  • 不应该把这行改成'*=',比如“val *= 1+$btn.data('inc');”我认为这可能会有所帮助。
  • 不应该是 $btn.data('data-inc')

标签: javascript jquery html css


【解决方案1】:

每个输出元素都应该是唯一的,因此它可以被自己调用。

$('.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 指定您要查找的确切输出元素。

【讨论】:

    【解决方案2】:

    简单点,你可以有两个函数,直接把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>

    【讨论】:

    • 虽然这在技术上是一个答案,因为它有效,但这并不意味着出了什么问题或导致问题的原因。
    猜你喜欢
    • 1970-01-01
    • 2015-04-04
    • 1970-01-01
    • 1970-01-01
    • 2018-07-06
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多