Jquery find nearest matching element
Asked Answered
C

4

76

I have a series of rows with columns and I want to select the value of an input field that is in a previous column to the input field (price input) that I am calling a function on when a key is released.

I have tried:

quantity = $(this).parent().parent().children().val() ;
quantity = $(this).parent().parent().children().closest('.inputQty', this).val() ;

But neither work.

An example of the 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>
Chamberlin answered 1/8, 2012 at 9:39 Comment(0)
T
168
var otherInput = $(this).closest('.row').find('.inputQty');

That goes up to a row level, then back down to .inputQty.

Tecumseh answered 1/8, 2012 at 9:43 Comment(4)
Is there no other function that looks for something on the same level as the element you're currently on? Do you always have to go up and back down?Tantalous
This question wasn't about finding something on the same level - it was necessary to go up then back down - but yes, for the same level there's .siblings() and various next~() and prev~() methods.Tecumseh
thanks I was looking for a solution like that and it worked for me! but most important i learn more about closest() function. Thank you so much! Davide,Willetta
Thanks tired with almost everything at last it worked for me :)Annulus
E
15

closest() only looks for parents, I'm guessing what you really want is .find()

$(this).closest('.row').children('.column').find('.inputQty').val();
Elongation answered 1/8, 2012 at 9:42 Comment(0)
R
2

Get the .column parent of the this element, get its previous sibling, then find any input there:

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

Demo: http://jsfiddle.net/aWhtP/

Rosyrot answered 1/8, 2012 at 9:42 Comment(0)
C
0

You could try:

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

Corvus answered 1/8, 2012 at 9:42 Comment(0)

© 2022 - 2024 — McMap. All rights reserved.