【问题标题】:Jquery mobile plus/minus issuejQuery移动加/减问题
【发布时间】:2015-10-19 21:42:16
【问题描述】:

我打算使用 jQuery mobile 来获得移动主题 http://jsfiddle.net/hhken790/

HTML

<input type="button" value="-" class="qtyminus" />
<input type="text" name="myInputs[qty][]" value="0" class="qty" />
<input type="button" value="+" class="qtyplus" />

jQuery

$("#dynamic").on("click", ".qtyplus", function (e) {
    e.preventDefault();
    var $input  = $(this).prev("input");
    var currentVal = parseInt($input.val());
    if (!isNaN(currentVal)) {
       $input.val(currentVal + 1);
    } else {
       $input.val(0);
    }
});

但是,加号和减号在这里不起作用。知道是什么原因造成的吗?

【问题讨论】:

  • 它可以在 Chrome 中使用吗?是否应用了移动主题。对我来说,它在 Chrome 中不起作用

标签: javascript jquery jquery-mobile


【解决方案1】:

当您添加 jQM 时,它会通过添加容器 div 和其他 DOM 元素来增强/样式化许多 DOM 元素。这意味着您的按钮和文本输入不再是 DOM 中的兄弟,并且 prev() 将不起作用。而是向上遍历 DOM,然后向下遍历:

var $input  = $(this).closest("div#dynamic").find(".qty");

例如:

$("#dynamic").on("click", ".qtyplus, .qtyminus", function (e) {
     e.preventDefault();
    var $input  = $(this).closest("div#dynamic").find(".qty");
    var currentVal = parseInt($input.val());
    if (!isNaN(currentVal)) {
        $(this).hasClass("qtyplus") ? $input.val(currentVal + 1) : $input.val(currentVal - 1);
    } else {
        $input.val(0);
    }
});

更新FIDDLE

【讨论】:

  • 谢谢。那行得通。但是,我使用的是.prev,因为我通过单击&lt;input type="button" value="Add another qty input" onClick="addInput('dynamic')"&gt; 添加了更多数量字段,这会生成一组新的数量+/-。因此,新代码将更新所有数量字段,而不仅仅是活动字段。
  • @user3419021,在您的动态代码中,您将控件放置在包含 DIV 中。只需给该 div 一个类并在遍历 DOM 时使用它:jsfiddle.net/ezanker/hhken790/4
  • 完美,对它进行了排序。感谢大家的帮助
猜你喜欢
  • 2013-05-14
  • 1970-01-01
  • 1970-01-01
  • 2013-11-17
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多