#jquery #hidden #html-table
#jquery #скрытая #html-таблица
Вопрос:
У меня есть следующая таблица:
<table id="mytable">
<tr>
<th class="hidden">id</th>
<th>name</th>
</tr>
<tr>
<td class="hidden">87</td>
<td>Isle of Palms</td>
</tr>
</table>
и затем этот код jQuery для скрытия столбца id:
<script>
$(function() {
$('.hidden').hide();
});
</script>
Мне нужно получить скрытое значение ячейки id при нажатии на любую строку, но я не могу найти правильный селектор. Будем признательны за любую помощь. Спасибо.
Ответ №1:
Попробуйте это:
$('tr').click(function () {
var id = $(this).find('td.hidden').html();
});
Обновить
$('tr').click(function () {
var id = $(this).find('td.hidden:first').html();
});
Если у вас много столбцов и вы хотите выбрать первый из них, вы можете использовать :first . Помните, это добавит событие click для всех ваших строк в вашей таблице. Я полагаю, вас интересуют только строки внутри вашего tbody, которых нет в вашем примере. Поэтому я бы сделал это вместо:
<table id="mytable">
<thead>
<tr>
<th class="hidden">id</th>
<th>name</th>
</tr>
</thead>
<tbody>
<tr>
<td class="hidden">87</td>
<td>Isle of Palms</td>
</tr>
</tbody>
</table>
а затем установите события щелчка для строк tbody
$('tbody tr').click(function () {
var id = $(this).find('td.hidden:first').html();
});
Надеюсь, это поможет!
Комментарии:
1. Ну … на самом деле ваш код работает для примера, который я публикую. Извините за мой последний комментарий. Но это не работает для моей реальной проблемы. Я использую таблицу с 15 столбцами, 7 из которых скрыты, и мне нужно получить первый скрытый столбец, это идентификатор. С наилучшими пожеланиями.
2. Я сделал. Спасибо за проявленный интерес. Оба ваших решения работают для кода, который я опубликовал. Но я получаю null в реальном коде при каждой строке, на которую я нажимаю. Код в основном тот же… просто больше столбцов. Странно. В любом случае спасибо 😉
3. Не могли бы вы скопировать / вставить реальную таблицу?
4. Не требуется… это работает! В реальной вещи у класса было другое имя. Я думал, что hidden — это какое-то «зарезервированное слово». Большое вам спасибо!!! Я довольно новичок в jQuery, и я боролся в течение нескольких часов.
5. скрытый — это зарезервированное слово, когда дело доходит до ввода => тип=»скрытый». В любом случае, если мой ответ был правильным, пожалуйста, проверьте его как этот.
Ответ №2:
Я собираюсь предположить, что вы мне .text()
из <td class="hidden">87</td>
или 87
Вы можете зарегистрировать обработчик щелчков на <tr/>
, а затем найти свой <td/>
$("tr").click(function(){
var $idCell = $(this).find("td.hidden");
if($idCell.length == 1)
{
var id = $idCell.text();
}
});
Редактировать
Немного лучшим вариантом может быть использование .filter()
, чтобы вы регистрировали только обработчики событий, у которых есть дочерний элемент <td class="hidden"/>
$("tr").filter(function(){
return $(this).children("td.hidden").length == 1;
}).click(function(){
alert($(this).find("td.hidden").text());
});
Комментарии:
1. Это сработало бы! Или он мог бы на самом деле написать thead и tbody, которые являются стандартными для W3C. А затем установите событие click следующим образом => $(‘tbody tr’).click(функция() { … });
2. Спасибо, но это не работает. Могу ли я спросить вас, что означает .length == 1 ? Извините, все еще учусь 😉
3. Это просто способ убедиться, что в возвращаемом наборе результатов есть только один скрытый td. Если у вас возникли проблемы, опубликуйте более надежный пример на jsfiddle. подключитесь , чтобы увидеть, в чем ваша проблема.