JQUERY无法读取价值

时间:2015-10-26 13:36:25

标签: javascript jquery html

我有一个按钮,我希望click事件读取前面一个HTML元素的值。我的HTML是

<div class="product_list_buy">
   <div class="product_quantity">
      <label for="qty">Qty:</label>
      <input class="quantity" type="text" value="1">
   </div>
   <div class="addcart_wrapper">
       <input class="product_id" type="hidden" value="5666" name="product_id">
       <button class="btn-cart">
   </div>
</div>

我试图通过以下JQUERY读取数量元素的值:

jq('.storelist').unbind('click').on('click',".btn-cart",function(){
var product_qty = jq(this).closest("div").prev(".quantity").val();
.....});

但它无法读取.quantity元素的值。我做错了什么?

2 个答案:

答案 0 :(得分:1)

考虑使用dom中最高对象的类:

var product_qty = $(this).closest(".product_list_buy").find(".quantity").val();

答案 1 :(得分:0)

http://jsfiddle.net/paska/bn7ag8j6/

var product_qty = $(this).closest("div").prev(".product_quantity").find(".quantity").val();

jQuery .prev docs

  

给定一个表示一组DOM元素的jQuery对象,.prev()方法在DOM树中搜索每个元素的前任,并从匹配元素构造一个新的jQuery对象。

     

该方法可选地接受相同类型的选择器表达式   可以传递给$()函数。如果提供选择器,   前面的元素将通过测试它是否匹配来过滤   选择器。

在您的情况下,<div class="addcart_wrapper">的前身是<div class="product_quantity">并且您正在使用选择器".quantity",因此它不匹配,并返回一个空的jQuery对象。

您应该使用.prev(".product_quantity")来选择<div class="product_quantity">,然后选择.find(".quantity")来选择输入。