Отменить выбор неизвестного выбора
У меня есть таблица, которая логически разделена на две половины. Мне придется выбрать только половину строки, как на картинке.
Теперь, если я выберу другую "половину" строки, мне нужно отменить выбор предыдущей. Как бы я это сделал? Мой код здесь:
<tr class="line1">
<td width="10" class="td3523" onclick="selectme('3523');">
<input type="radio" name="selattendance" id="tr3523" onClick="setEditDelete(3523)"/>
</td>
<td width="100" class="td3523" onclick="selectme('3523');">2012-11-19</td>
<td width="125" class="td3523" onclick="selectme('3523');">
<table width="100%" cellpadding="0" cellspacing="0" style="border: 0;padding: 0;border-collapse: collapse">
<tr>
<td style="width: 50%;padding-right: 10px;border: 0" align="right" valign="middle">22:54</td>
<td style="width: 20%;border: 0"> <a href="#" onclick="loadPic('attendanceimages/39286a0a6b45cae9f116b11882f36046.jpg','2012-11-19','2012-11-19','add','','In','22:54:04','22:54:04');"><img src="images/punchimg.png"></a>
</td>
<td style="width: 20%;border: 0"> </td>
</tr>
</table>
</td>
</tr>
Когда я нажимаю на любой td
, все td
ы с тем же идентификатором выбираются с помощью этого кода:
function selectme(id) {
$('.td' + id).toggleClass("ui-selected");
}
Я думаю, мне нужно поставить еще одну строку, удалив этот класс из ранее выбранного td
s. Как бы я это сделал? Благодарю.
3 ответа
Отдай свое <td>
другой класс говорят tdclss
затем используйте его в своей функции, чтобы удалить ui-selected
учебный класс.
function selectme(id) {
$('.tdclss').removeClass("ui-selected");
$('.td' + id).toggleClass("ui-selected");
}
Один подход:
$('input:radio').change(
function(){
// caching the jQuery $(this) object
var that = $(this);
that
// moves up to the closest ancestor table element
.closest('table')
// finds the '.selected' elements within that table
.find('.selected')
// removes the 'selected' class from those elements.
.removeClass('selected');
that
// moves to the parent td element
.parent()
// selects subsequent siblings *until* it finds
// an element that matches the selector
.nextUntil($('td:has("input:radio")'))
// adds back the current td element to the collection
.andSelf()
// adds the 'selected' class
.addClass('selected');
});
Рекомендации:
addClass()
,andSelf()
,closest()
,find()
,:has()
селекторnextUntil()
,parents()
,
Использование нескольких полей с одинаковым идентификатором рано или поздно вызывает проблемы. Вы можете использовать атрибуты класса для группировки ячеек, или вы можете (вероятно) использовать <span>
сгруппировать их (хотя я должен признать, я никогда не пробовал <span>
в пределах <tr>
).