web-dev-qa-db-ja.com

jqueryは最も近い一致する要素を見つける

列を持つ一連の行があり、キーが離されたときに関数を呼び出している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>
57
imperium2335
var otherInput = $(this).closest('.row').find('.inputQty');

それは行レベルに上がり、.inputQtyに戻ります。

123
Utkanos

closest()は親だけを探します。本当に欲しいものは .find()

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

this要素の.column親を取得し、その前の兄弟を取得し、そこで入力を見つけます。

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

デモ: http://jsfiddle.net/aWhtP/

1
Esailija

あなたが試すことができます:

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

0
Alex