JQuery <a>тег клик событие - PullRequest
       6

JQuery <a>тег клик событие

13 голосов
/ 28 ноября 2010

Я строю код, который отображает информацию о пользователях при поиске. Информация о пользователе, затем отображается в 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, а не других. Пожалуйста, ведите меня в этом.

Заранее спасибо.

РЕДАКТИРОВАТЬ: Как получить его в каждом событии клика тега? Я помещаю здесь еще немного кода,

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

Ответы [ 3 ]

34 голосов
/ 28 ноября 2010
<a href="javascript:void(0)" class="aaf" id="users_id">add as a friend</a>

по запросу

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

// другим способом является использование атрибута данных

<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");
})
5 голосов
/ 28 ноября 2010

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

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

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

РЕДАКТИРОВАТЬ: скажем, ваш вывод выглядит следующим образом (обратите внимание, идентификаторы изменились на классы)

<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());
});

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

2 голосов
/ 28 ноября 2010

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...