web-dev-qa-db-fra.com

jquery <a> événement de clic de tag

Je construis un code qui affiche les informations utilisateur lors de la recherche. Les informations utilisateur sont ensuite affichées dans un fieldset, et une image, prénom, nom et quelques informations de profil. est affiché, et au bas du fieldset, il y a un lien hypertexte comme ami:

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

Maintenant, je veux utiliser la méthode jquery $post() pour interagir avec une autre page. J'ai également un champ caché à l'intérieur de cet utilisateur fieldset qui a la valeur de l'ID utilisateur. Maintenant, lorsque je crée une fonctionnalité de clic à l'aide de jquery, je ne suis pas en mesure d'accéder aux différentes valeurs de champ masqué. Maintenant, je veux savoir comment réaliser cette fonctionnalité? Pour vérifier si je peux obtenir la valeur des champs cachés dans un ensemble de codes, je l'ai fait.

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

Mais je ne reçois que la valeur du premier fieldset, pas des autres. Veuillez me guider dans ce domaine.

Merci d'avance.

EDIT: Comment l'obtenir dans chaque événement de clic de tag? Je mets un peu plus de code ici,

<?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>
13
Maverick
<a href="javascript:void(0)" class="aaf" id="users_id">add as a friend</a>

sur jquery

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

// une autre méthode consiste à utiliser l'attribut data

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

sur jquery

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

En effet, vos champs masqués ont des ID en double, donc jQuery ne renvoie que le premier de l'ensemble. Donnez-leur plutôt des cours, comme .uid et les récupérer via:

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

Démo: http://jsfiddle.net/karim79/FtcnJ/

EDIT: dites que votre sortie ressemble à ceci (remarque, les ID ont changé en classes)

<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>

Vous pouvez cibler le 'uid' par rapport à l'ancre cliquée comme ceci:

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

Important: ne disposez d'aucun ID en double. Ils causeront des problèmes. Ils sont invalides , mauvais et vous devriez pas le faire.

5
karim79

Tous les champs masqués de votre jeu de champs utilisent le même identifiant, donc jquery ne renvoie que le premier. Une façon de résoudre ce problème consiste à créer une variable de compteur et à la concaténer à chaque identifiant de champ masqué.

2
Stephen Curial