2012-08-01 1 views
49

J'ai une série de lignes avec des colonnes et je veux sélectionner la valeur d'un champ input qui est dans une colonne précédente au champ input (entrée de prix) que j'appelle une fonction quand un La clé est libérée.Jquery trouver l'élément correspondant le plus proche

J'ai essayé:

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

Mais ni travail.

Un exemple du 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> 

Répondre

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

qui va jusqu'à un niveau de la ligne, puis avant.

+0

N'y at-il autre fonction qui cherche quelque chose au même niveau que l'élément sur lequel vous êtes actuellement? Avez-vous toujours besoin de monter et de reculer? – Majo0od

+0

Cette question ne consistait pas à trouver quelque chose au même niveau - il fallait monter puis redescendre - mais oui, pour le même niveau il y a '.siblings()' et divers 'next ~()' et 'prev ~() 'méthodes. – Utkanos

+2

merci je cherchais une solution comme ça et ça a marché pour moi! mais le plus important j'apprends plus au sujet de la fonction la plus proche(). Merci beaucoup! Davide, –

1

Obtenez le parent .column de l'élément this, obtenir son frère précédent, puis y trouver une entrée:

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

Démo: http://jsfiddle.net/aWhtP/

0

Vous pouvez essayer:

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

10

closest() ne regarde que pour les parents, je devine ce que vous voulez vraiment est .find()

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