2010-08-28 13 views
7

Tengo varios botones en mi página con la misma clase. Cuando hago clic en un botón, quiero obtener el valor del cuadro de entrada más cercano (recuerde que hay múltiples cuadros de entrada y botones en mi página con las mismas clases).Cómo obtener el valor de la entrada más cercana Jquery

tengo:

$(".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> 

¿Cómo puedo obtener el valor de la entrada más cercana y hacer mi variable igual a ella cuando un usuario hace clic en el enlace ????

Respuesta

13

Use .prev() si está seguro de que están uno al lado del otro. (Esto debería ser más rápido.)

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

Esto obtiene el elemento anterior.

Si hay una posibilidad de que no habrá otro elemento en el medio, se podría utilizar .siblings():

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

Esto hará que todos los hermanos dentro de la misma <div> con la clase deleteid.

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

Se puede (y lo hace) causa problemas con el perfomance de. Por ejemplo:

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

veces devuelve el valor anterior de .deleteid (no 10)

Cuestiones relacionadas