2010-11-27 19 views
10

Ich erstelle einen Code, der Benutzerinformationen zur Suche anzeigt. Benutzerinformationen, wird dann in einem fieldset, und ein Bild, Vorname, Nachname und einige Profilinformationen angezeigt. in der Unterseite des fieldset, gezeigt, und es ist ein Add als Freund Hyperlink:jquery <a> tag click event

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

Jetzt möchte ich jquery $post() Methode verwenden, um mit einer anderen Seite zu interagieren. Ich habe auch ein verstecktes Feld innerhalb dieses Benutzers fieldset, der den Benutzer-ID-Wert hat. Wenn ich jetzt eine Klick-Funktion unter Verwendung von jquery erstelle, kann ich nicht auf die verschiedenen versteckten Feldwerte zugreifen. Jetzt möchte ich wissen, wie man diese Funktionalität erreicht? Um zu überprüfen, ob ich den Wert von versteckten Feldern innerhalb eines Codesatzes erhalten kann, habe ich dies getan.

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

Aber ich bin immer nur den Wert des ersten fieldset, andere nicht. Bitte führe mich darin.

Vielen Dank im Voraus.

EDIT: Wie bekomme ich es in jedem Tag Klick Ereignis? Ich stelle etwas mehr Code hier

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

Antwort

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

auf jquery

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

// andere Methode ist, die Daten

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

auf jquery verwenden

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

Hinweis .Live() wird in den neuesten jQueries abgeschrieben. Verwenden Sie stattdessen .on(). – rogueleaderr

4

Das ist, weil Sie Ihre verborgenen Felder doppelte IDs haben, so jQuery nur die erste in der Reihe zurückgibt. Gib ihnen Klassen statt, wie .uid und greifen sie über:

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

Demo: http://jsfiddle.net/karim79/FtcnJ/

EDIT: sagen die Ausgabe wie folgt aussieht (Ankündigung haben IDs Klassen geändert)

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

Sie können die 'uid' relativ zum geklickten Anker so ausrichten:

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

Wichtig: Keine doppelten IDs haben. Sie werden Probleme verursachen. Sie sind ungültig, schlecht und Sie sollten nicht tun es.

+0

ok, ich werde das ausprobieren und euch Jungs wissen lassen. Danke dafür. – Maverick

2

alle versteckten Felder in Ihrem Fieldset sind mit der gleichen ID, also ist jquery nur retu rning der erste. Eine Möglichkeit, dies zu beheben, besteht darin, eine Zählervariable zu erstellen und sie mit jeder versteckten Feld-ID zu verketten.