У меня есть 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" в своем окне предупреждения. Я прислонился головой к стене, почему...
Измените цикл на допустимый HTML, и обработчик события должен работать
<table align='center' width='100%' name='summary' id='summary'>
foreach ($users as $key => $value) {
echo "<tr id='".$key."' class='getDetail'><th>".$key."</th>";
}
$(this).find('a').prop('id')
, должно быть то же самое, и кажется, что это будет способ получить его?
Пытаться:
$('#summary tr a').click(function() {
alert($(this).attr('id'));
});
но ваш HTML некорректен, я думаю, вы должны поместить тег внутри тега TH.
this
в вашем обратном вызове относится к элементу<tr>
, который создает идеальный смысл, так как именно к этому прикреплен слушатель. Атрибутid
otoh устанавливается в теге<a>
, поэтому вам нужно сначала найти этот элемент ($(this).find("a").attr("id");
).