2010-08-28 13 views
7

Ho più pulsanti sulla mia pagina con la stessa classe. Quando clicco su un pulsante, voglio ottenere il valore della casella di input più vicina (ricorda che ci sono più caselle di input e pulsanti sulla mia pagina con le stesse classi).Come ottenere il valore dell'input più vicino Jquery

ho:

$(".deletepostbutton").click(function() { 

      var deleteid = $(this).closest('.deleteid').attr('value'); 

    }); 


<div class="microblogpostactions"> 
    <input type="text" name="deleteid" class="deleteid" value="'.$row['id'].'" /> 
    <a href="Javascript:void[0]" class="deletepostbutton">Delete</a> 
    </div> 

<div class="microblogpostactions"> 
    <input type="text" name="deleteid" class="deleteid" value="'.$row['id'].'" /> 
    <a href="Javascript:void[0]" class="deletepostbutton">Delete</a> 
    </div> 

Come posso ottenere il valore dell'ingresso più vicino e fare la mia variabile pari ad esso quando un utente fa clic sul link ????

risposta

13

Utilizzare .prev() se si è sicuri che siano proprio uno accanto all'altro. (Questo dovrebbe essere il più veloce.)

var deleteid = $(this).prev().attr('value'); 

Questo ottiene l'elemento precedente.

Se c'è una possibilità che ci sarà un altro elemento in mezzo, è possibile utilizzare .siblings():

var deleteid = $(this).siblings('.deleteid').attr('value'); 

Questo otterrà tutti fratelli all'interno dello stesso <div> con la classe deleteid.

3
$(this).parent().find('.deleteid').attr('value'); 
0
$(this).parent().find('.deleteid').attr('value'); 

Può (e lo fa) causare problemi con perfomance. Per esempio:

$(this).parent().find('.deleteid').val(10); 
alert($(this).parent().find('.deleteid').val()); 

volte restituisce il valore precedente di .deleteid (non 10)

Problemi correlati