imperium2335
imperium2335

Reputation: 24112

Jquery find nearest matching element

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>

Upvotes: 76

Views: 212953

Answers (4)

Mitya
Mitya

Reputation: 34556

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

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

Upvotes: 168

adeneo
adeneo

Reputation: 318182

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

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

Upvotes: 15

Alex
Alex

Reputation: 7374

You could try:

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

Upvotes: 0

Esailija
Esailija

Reputation: 140210

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/

Upvotes: 2

Related Questions