Jquery 查找最近匹配元素

76

我有一系列带有列的行,我想选择一个位于当前 input 字段之前的 input 字段(价格输入),当按键释放时对其进行调用并获取其值。

我尝试过:

quantity = $(this).parent().parent().children().val() ;
quantity = $(this).parent().parent().children().closest('.inputQty', this).val() ;
但是两种方法都不起作用。 一个DOM的例子:
<div class="row">
    <div class="column"><input class="inputQty" id="quantity0" /></div>
    <div class="column"><input class="someOther" id="Other0" /></div>
    <div class="column">
        <div class="cSelect">
            <select id="currency0"><option>£</option></select>
            <input class="price" id="price0" />
        </div>
    </div>
</div>
4个回答

168
var otherInput = $(this).closest('.row').find('.inputQty');

这个过程上升到行级别,然后回到 .inputQty


1
有没有其他函数可以查找与当前元素相同级别的内容?你总是需要向上和向下返回吗? - Majo0od
3
这个问题不是要在相同的级别上查找 - 必须向上再向下 - 但是,是的,在相同的级别上有.siblings()和各种next~()prev~()方法。 - Mitya
2
谢谢!我一直在寻找这样的解决方案,它对我很有用!但更重要的是,我学到了更多关于closest()函数的知识。非常感谢! 达维德 - P.Davide
1
谢谢,我已经快累垮了,但最终它对我起作用了 :) - Arzon Barua

14

closest()只会查找父元素,我猜你真正需要的是.find()


$(this).closest('.row').children('.column').find('.inputQty').val();

2

获取this元素的.column父级,获取其前一个同级元素,然后查找其中的任何输入:

$(this).closest(".column").prev().find("input:first").val();

演示:http://jsfiddle.net/aWhtP/

0

你可以尝试:

$(this).closest(".column").prev().find(".inputQty").val();


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接