#jquery #html-table #row #cell
#jquery #html-таблица #строка #ячейка
Вопрос:
Мне нужна помощь в извлечении данных ячейки из таблицы, когда пользователь нажимает кнопку an в конце строки таблицы. Таблица генерируется с помощью технологии Ajax. Я не уверен, имеет ли это значение при доступе к элементам таблицы.
<script type='text/javascript' src='jquery.js'></script>
<p>** click me **</p>
<br/>
<div id="placeHolder">some text goes here!</p>
<script>
$("p").click(function () {
$.ajax({
url: "status_2.html",
cache: false,
success: fnSuccess
}
);
});
function fnSuccess(msg)
{
$('div#placeHolder').html(msg);
}
function selectEditActivity(pass_id){
var row = $('#' pass_id);
var seq = row.attr('seq');
// here I would like to pull the value of the date from the selected row
// but I just can't get syntax right. I get a null value on alert
var from_date = $('td', row).eq(0).html();
alert(from_date);
}
</script>
Это HTML-код, который считывается в (файл: status_2.html )
<span id="status2">
<span id="response" class="response"></span>
<table class="tableBorder">
<tr >
<th class="align_left">Date</th>
</tr><tr>
<tr seq="1" class="row_theme2" id="id3014201105191"></tr>
<tr><td>20090519</td>
<td>1330</td>
<td>1430</td>
<td>LUNCH</td>
<td></td>
<td><a onclick="selectEditActivity('id3014201105191');" href="#">EDIT</a></td>
</tr>
<tr seq="2" class="row_theme2" id="id3014201105192"></tr>
<tr><td>20100519</td>
<td>1330</td>
<td>1430</td>
<td>LUNCH</td>
<td></td>
<td><a onclick="selectEditActivity('id3014201105192');" href="#">EDIT</a></td>
</tr>
<tr seq="3" class="row_theme2" id="id3014201105193"></tr>
<tr><td>20110519</td>
<td>1330</td>
<td>1430</td>
<td>LUNCH</td>
<td></td>
<td><a onclick="selectEditActivity('id3014201105193');" href="#">EDIT</a></td>
</tr>
</tbody></table>
Ответ №1:
Измените это:
var from_date = $('td', row).eq(0).html();
к этому:
var from_date = row.next().children('td').eq(0).html();
…потому что информация, которую вы ищете, находится в следующей строке после строки с идентификатором. Строка с идентификатором не имеет <td>
элементов.
Живой пример: http://jsfiddle.net/kkP56 /
РЕДАКТИРОВАТЬ: Вы могли бы избавиться от встроенных обработчиков onclick и позволить jQuery назначать обработчики, если хотите.
$(function() {
$('table tr a').click(function() {
var from_date = $(this).parent().prevAll().last().html();
alert( from_date );
});
});
Комментарии:
1. brillant! У меня всегда возникают проблемы с примерами такого типа. Есть ли лучший способ выразить это решение?
2. @твой брат Боб: Ты спрашиваешь, есть ли лучший способ добиться этого? Если это так, вы можете рассмотреть возможность того, чтобы jQuery обрабатывал ваши обработчики событий. Вы можете избавиться от встроенных обработчиков onclick и просто обойти DOM с того, на который был сделан щелчок. Я дам обновление,