Подтвердить что ты не робот

JQuery <a>тег click event

Я создаю код, который отображает информацию пользователя при поиске. Информация пользователя, затем отображается в fieldset, а также изображение, имя, фамилия и несколько профилей. отображается, а внизу fieldset добавляется гиперссылка друга:

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

Теперь я хочу использовать метод jquery $post() для взаимодействия с другой страницей. У меня также есть скрытое поле внутри этого пользователя fieldset, у которого есть значение идентификатора пользователя. Теперь, когда я создаю функцию щелчка с помощью jquery, я не могу получить доступ к различным значениям скрытого поля. Теперь я хочу знать, как достичь этой функциональности? Для проверки того, могу ли я получить значение скрытых полей внутри набора кода, я сделал это.

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

Но я получаю только значение fieldset, а не другие. Пожалуйста, помогите мне в этом.

Спасибо заранее.

EDIT: как получить его в каждом событии click tag? Здесь я помещаю еще код,

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

Ответ 1

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

на jquery

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

//другой метод заключается в использовании атрибута data​​p >

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

на jquery

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

Ответ 2

Это потому, что ваши скрытые поля имеют повторяющиеся идентификаторы, поэтому jQuery возвращает только первое из набора. Вместо этого дайте им классы, например .uid, и возьмите их через:

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

Демо: http://jsfiddle.net/karim79/FtcnJ/

EDIT: скажем, что ваш вывод выглядит следующим образом (уведомление, идентификаторы изменены на классы)

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

Вы можете настроить "uid" относительно привязанного якоря следующим образом:

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

Важно: у вас нет дубликатов идентификаторов. Они вызовут проблемы. Они недействительны, плохи, и вы не должны этого делать.

Ответ 3

Все скрытые поля в вашем полевом наборе используют один и тот же идентификатор, поэтому jquery возвращает только первый. Один из способов исправить это - создать переменную счетчика и объединить ее в каждый скрытый идентификатор поля.