我有一个按钮,我希望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元素的值。我做错了什么?
答案 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")
来选择输入。