2015-12-21 91 views
0

我在页面上有多个表单,还有多个带有加号/减号的输入框。Jquery多个加号/减号脚本

我很难让这些输入框单独工作。可能是因为一些错误/相同的ID或类似的东西,或者可能是我的代码错误的设置。问题是我在代码中找不到我的错误,并且在控制台中没有出现任何错误。

我有什么:

 function quantity_change(way, id){ 

      quantity = $('#product_amount_'+id).val(); 
      if(way=='up'){ 
      quantity++; 
       } else { 
       quantity--; 
      } 
      if(quantity<1){ 
      quantity = 1; 
      } 
      if(quantity>10){ 
      quantity = 10; 
      } 
      $('#product_amount_'+id).val(quantity); 

     } 

而且我的html:

//row 1 
<div class="amount"><input type="text" name="quantity" value="1" id="product_amount_1234"/></div> 
    <div class="change" data-id="1234"> 
    <a href="javascript:;" onclick="quantity_change('up');" title="+" class="up">+</a> 
    <a href="javascript:;" onclick="quantity_change('down');" title="-" class="down">-</a> 
</div> 

//row 2 
<div class="amount"><input type="text" name="quantity" value="1" id="product_amount_4321"/></div> 
    <div class="change" data-id="4321"> 
    <a href="javascript:;" onclick="quantity_change('up');" title="+" class="up">+</a> 
    <a href="javascript:;" onclick="quantity_change('down');" title="-" class="down">-</a> 
</div> 

我觉得这样的事情会做的伎俩,但它不:(

$(document).ready(function(){ 
      $('.change a').click(function(){ 
       var id = $(this).find('.change').data('id'); 
       quantity_change(id) 
      }); 
      }); 

任何非常感谢!

回答

2

您应该使用closest()方法访问父类div change,然后您可以读取数据属性ID的值。

var id = $(this).closest('.change').data('id'); 
alert(id); 

由于您使用的JavaScript unobutrusive已经结合的Click事件,你并不需要在你的HTML标记的onclick代码。

此外,您的quantity_change方法需要2个参数并使用两个参数,但您只传递一个参数。您可以将值为way的HTML 5数据属性保留在锚标记上,并从中读取并将其传递给您的方法。

<div class="change" data-id="1234"> 
    <a href="#" data-way="up" title="+" class="up">+</a> 
    <a href="#" data-way="down" title="-" class="down">-</a> 
</div> 

所以校正后的js代码是

$(document).ready(function(){ 

    $('.change a').click(function(e){ 
      e.preventDefault(); 
      var _this=$(this); 

      var id = _this.closest('.change').data('id'); 
      var way= _this.data("way"); 

      quantity_change(way,id) 
    }); 

}); 

Here是工作示例。

+0

完美感...... thx! – Meules