当试图获取最接近按钮的输入字段的值时,结果一直是不确定的。
我已经尝试过了:
class RValueReplacementListener(ParseTreeListener):
replacements = 0
r_mapping = {}
rewriter = None
def __init__(self, tokens):
self.rewriter = TokenStreamRewriter(tokens)
// Code removed for the sake of brevity
# Enter a parse tree produced by JavaParser#integerLiteral.
def enterIntegerLiteral(self, ctx:JavaParser.IntegerLiteralContext):
hex_literal = ctx.HEX_LITERAL()
if hex_literal is not None:
int_literal = int(hex_literal.getText(), 16)
if int_literal in self.r_mapping:
# print('Replace: ' + ctx.getText() + ' with ' + self.r_mapping[int_literal])
self.rewriter.replaceSingleToken(ctx.start, self.r_mapping[int_literal])
self.replacements += 1
这:
$('button.add_to_cart_button.button.ajax_add_to_cart').on('click', function() {
var v = $(this).closest('div.quantity').find("input[name='quantity']").val();
console.log(v);
});
但是如上所述,我只是得到了“未定义”。
这是html:
$('button.add_to_cart_button.button.ajax_add_to_cart').on('click', function() {
var v = $(this).closest( '.input-text.qty' ).val();
console.log(v);
});
答案 0 :(得分:2)
您必须使用$(this).prev('div.quantity')
,因为.quantity
不是按钮的父项,而是同级项。
如果您的按钮位于.quantity
的内部 ,您的代码将起作用。
演示
$('button.add_to_cart_button.button.ajax_add_to_cart').on('click', function() {
var v = $(this).prev('div.quantity').find("input[name='quantity']").val();
console.log(v);
});
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<div class="quantity">
<label class="screen-reader-text" for="quantity_5dce7f0dc2a65">Some label</label>
<input type="number" class="input-text qty text" step="1" min="0" max="" name="quantity" value="1" title="Qty" size="4" inputmode="numeric">
</div>
<button type="submit" data-product_id="123" data-quantity="1" class="add_to_cart_button button ajax_add_to_cart">Buy</button>
答案 1 :(得分:1)
像这样更改您的html标记:
<div class="quantity">
<label class="screen-reader-text" for="quantity_5dce7f0dc2a65">Some label</label>
<input type="number" class="input-text qty text" step="1" min="0" max="" name="quantity" value="1" title="Qty" size="4" inputmode="numeric">
<button type="submit" data-product_id="123" data-quantity="1" class="add_to_cart_button button ajax_add_to_cart">Buy</button>
</div>
或使用prev()
jQuery函数,如下所示:
$('button.add_to_cart_button.button.ajax_add_to_cart').on('click', function() {
var v = $(this).prev().find("input[name='quantity']").val();;
console.log(v);
});