将元素/标识符引用传递给函数

时间:2014-05-25 14:58:20

标签: javascript jquery spinner

我正在构建我几乎第一个JavaScript应用程序。我正试图让多个纺纱厂这样做:
  + [0] -
  + [3] -
  + [0] -

我有以下用于添加和减去微调器值的代码:

$('#plus').unbind('click').bind('click', function() {
    var value = $('#number').val();
    value++;
    $('#number').val(value);
});
$('#minus').unbind('click').bind('click', function() {
    var value = $('#number').val();
    if (value > 0) value--;
    $('#number').val(value);
});

以及微调器的以下标记:

<div data-role="controlgroup" data-type="horizontal" data-mini="true">
    <p><button id="plus" data-inline="true">    +</button>
    <input type="text" id="number" value="0" disabled="disabled" />
    <button id="minus" data-inline="true">-</button></p>
</div>

但是我不明白如何将微调器的标识符传递给加/减函数,即我不想写多个加/减函数,每个微调器都有一个。

所有帮助表示赞赏!

1 个答案:

答案 0 :(得分:0)

您可以执行以下操作:

$('.plus').unbind('click').bind('click', function() {
    var numberControl = $(this).parent().find('.number'), value = numberControl.val();
    value++;
    numberControl.val(value);
});
$('.minus').unbind('click').bind('click', function() {
    var numberControl = $(this).parent().find('.number'), value = numberControl.val();
    if (value > 0) value--;
    numberControl.val(value);
});

JsFiddle示例:

http://jsfiddle.net/8C8c8/4/

这是做什么的:

  • 对于当前点击的按钮(在我们的示例中为this),请转到parent()find() input
  • 类型的子项
  • 使用找到的元素来获取/设置val

如果您的元素存在的次数超过1次,我建议您使用class代替id。如果元素在HTML中仅存在一次,则使用id。如果它会存在多次,那么您应该使用class