JQuery нажмите на TR ID не приводит к ожидаемым результатам

0

У меня есть php-массив:

 $users = array('Bob' => 'User',"Tom Smith'=>'Owner','Jack Mason' =>'User');

Я создаю таблицу этих пользователей:

<table align='center' width='100%' name='summary' id='summary'>

foreach ($users as $key => $value)
{
    echo "<tr><a href='#' id='" . $key . "' class='getDetail'>
                    <th>" . $key . "</th>
                        .....etc
}

и jquery

 $('#summary tr').click(function() {
 alert($(this).attr('id'));
 });

я бы ожидал, что предупреждение покажет ключ массива. $ Key определенно задан, потому что я вижу его в поле "th".

когда я нажимаю на любую строку в таблице, я получаю "undefined" в своем окне предупреждения. Я прислонился головой к стене, почему...

  • 0
    this в вашем обратном вызове относится к элементу <tr> , который создает идеальный смысл, так как именно к этому прикреплен слушатель. Атрибут id otoh устанавливается в теге <a> , поэтому вам нужно сначала найти этот элемент ( $(this).find("a").attr("id"); ).
Теги:

2 ответа

1
Лучший ответ

Измените цикл на допустимый HTML, и обработчик события должен работать

<table align='center' width='100%' name='summary' id='summary'>

foreach ($users as $key => $value) {
  echo "<tr id='".$key."' class='getDetail'><th>".$key."</th>";
}
  • 0
    вариант 2 работает, вариант 1 - нет. из любопытства есть мысли о том, почему?
  • 0
    Попробуйте $(this).find('a').prop('id') , должно быть то же самое, и кажется, что это будет способ получить его?
Показать ещё 9 комментариев
0

Пытаться:

$('#summary tr a').click(function() {
    alert($(this).attr('id'));
});

но ваш HTML некорректен, я думаю, вы должны поместить тег внутри тега TH.

Ещё вопросы

Сообщество Overcoder
Наверх
Меню