2010-11-27 27 views
10

Estoy creando un código que muestra la información del usuario en la búsqueda. La información del usuario se muestra en un fieldset, y una imagen, nombre, apellido e información de perfil. se muestra, y en la parte inferior de la fieldset, hay un complemento como amigo hipervínculo:jquery <a> etiqueta, haga clic en evento

<a href="#" id="aaf">add as friend</a> 

Ahora quiero usar jQuery $post() método para interactuar con otra página. También tengo un campo oculto dentro de ese usuario fieldset que tiene el valor de identificación del usuario. Ahora, cuando creo una funcionalidad de clic usando jquery, no puedo acceder a los diferentes valores de campo oculto. Ahora quiero saber cómo lograr esta funcionalidad? Para comprobar si puedo obtener el valor de los campos ocultos dentro de un conjunto de código, lo hice.

$(document).ready(function() { 
    $("a#aaf").bind('click', function() { 
     alert($("#uid").val()); 
    }); 
}); 

Pero yo sólo estoy poniendo el valor de la primera fieldset, otros no. Amablemente guíame en esto.

Gracias de antemano.

EDITAR: ¿Cómo se obtiene en cada evento de clic de etiqueta? Estoy poniendo algo más de código aquí,

<?php foreach($query->result() as $row){?> 
<fieldset> 
    <legend> 
     <?php echo $row->firstname.' '.$row->lastname;?> 
    </legend> 
    <img src='<?php echo $row->profile_img_url;?>'/><br> 
    <a href="#" id="aaf">add as friend</a> 
    <input name="uid" type="hidden" value='<?php echo $row->uid;?>' id="uid"> 
</fieldset> 

Respuesta

22
<a href="javascript:void(0)" class="aaf" id="users_id">add as a friend</a> 

en jQuery

$('.aaf').on("click",function(){ 
    var usersid = $(this).attr("id"); 
    //post code 
}) 

// otro método es utilizar el atributo de datos

<a href="javascript:void(0)" class="aaf" data-id="102" data-username="sample_username">add as a friend</a> 

en jQuery

$('.aaf').on("click",function(){ 
    var usersid = $(this).data("id"); 
    var username = $(this).data("username"); 
}) 
+2

Nota .live() se deprecia en los jQueries más nuevos. Utilice .on() en su lugar. – rogueleaderr

4

Esto se debe a sus campos ocultos tienen identificadores duplicados, por lo jQuery sólo devuelve el primero en el conjunto. darles clases en lugar, como .uid y apoderarse de ellos a través de:

var uids = $(".uid").map(function() { 
    return this.value; 
}).get(); 

Demostración: http://jsfiddle.net/karim79/FtcnJ/

EDIT: decir que su salida tiene el siguiente aspecto (aviso, identificaciones han cambiado a clases)

<fieldset><legend>John Smith</legend> 
<img src='foo.jpg'/><br> 
<a href="#" class="aaf">add as friend</a> 
<input name="uid" type="hidden" value='<?php echo $row->uid;?>' class="uid"> 
</fieldset> 

Puede orientar el 'uid' relativo al ancla cliqueada de la siguiente manera:

$("a.aaf").click(function() { 
    alert($(this).next('.uid').val()); 
}); 

Importante: no tiene ningún ID duplicado. Ellos causarán problemas. Son inválido, malo y debe no hacerlo.

+0

bien, voy a probar esto, y les dejaré saber algo ... gracias por eso. – Maverick

2

Todos los campos ocultos en su conjunto de campos se usando el mismo ID, entonces jquery es solo retu el primero. Una forma de solucionar esto es crear una variable de contador y concatenarla a cada id de campo oculto.

Cuestiones relacionadas