Мое условие: У меня есть флажок внутри <tr>
, написанный в <asp:repeater>
на пользовательском элементе управления, размещенном на странице aspx.jquery issues with tr click changes checkbox
Моя цель: если щелкнуть <tr>
, JQuery изменяет (или, в частности, переключает) флажок установленного атрибута, а также класс css самого <tr>
.
Я пробовал несколько методов, и до сих пор, только это работает для меня: http://jsfiddle.net/xixonia/WnbNC/ , но, к сожалению, все флажки переключаются вместо только выбранного одного, так же, как, например, на jsfiddle.net. кроме того, если бы я нажал на флажок, все остальные флажки будут отмечены вместо щелкнутого.
Что я сделал:
$(".moduleTableItem").click(function (e) {
// Toggles CSS
if (!$(this).closest('tr').hasClass("tr.active")) {
$(this).closest('tr').css('background-color', 'blue');
$(this).closest('tr').addClass("tr.active");
} else {
$(this).closest('tr').css('background-color', 'red');
$(this).closest('tr').removeClass("tr.active");
}
// Toggles Checkbox
$(':checkbox').prop('checked', function (i, value) {
return !value;
});
ASP:
<asp:Repeater ID="repModuleGeneral" runat="server" EnableViewState="true">
<ItemTemplate>
<tr id="trModuleGeneral" class="moduleTableItem" runat="server">
<td>
<input type="checkbox" id="cbxSelect" class="cbxSelect" runat="server" autopostback="false" /></td>
<td>
<asp:Label ID="lblNo" runat="server" /></td>
</tr>
</ItemTemplate>
</asp:Repeater>
Это мой первый вопрос. Пожалуйста, дайте мне знать, если мой вопрос несколько неясен. Любые фрагменты кода или рабочие решения будут оценены.
спасибо.
"при нажатии" - когда что нажата? флажок или кнопки? – krishgopinath
Я думаю, вы использовали неправильный селектор. ": checkbox" означает все флажки. Если вы хотите указать один, вы должны использовать селектор, который может идентифицировать его, например, id или что-то еще. Обратите внимание на [скрипка] (http://jsfiddle.net/WnbNC/145/) и обратите внимание на последнюю. – Clxy
также, чтобы показать нам ваш HTML для
ответ
Изменить
Для
this
используется здесь будет указывать на текущий щелкнулtr
.Это обыкновение работать, если вы нажмете этот флажок. Почему ты спрашиваешь? Потому что
checkbox
находится внутриtr
, к которому вы назначили событиеclick
. Так что, когда нажать на флажок, которыйunchecked
эти два действия вызваны:true
.tr
. У вас есть флажокprop
. Возвращает выбранный по умолчанию действие.Таким образом, это основное действие счетчика, которое отменяет действия по умолчанию этого флажка. Чтобы исправить это, вы должны проверить, если цель по умолчанию НЕ флажок, а затем запустить
prop
функцию:Демо: http://jsfiddle.net/hungerpain/Kph8M/
Но, так же, как со стороны мысли, если у вас есть контроль над идентификаторами, сгенерированными над флажками, вы можете присвоить тот же идентификатор, что и атрибут
for
в метке. Ваш HTML будет выглядеть следующим образом:Не атрибут флажка
id
и атрибут меткиfor
. Таким образом, многие проблемы будут решены.И вы можете использовать событиеchange
этого флажка. Кроме того, некоторые оптимизации для вашего кода. Это будет выглядеть примерно так:Демо: http://jsfiddle.net/hungerpain/Kph8M/4/
источник
2013-08-03 11:31:38 krishgopinath
Хорошо, спасибо, это работает, наконец! Установите флажок css и checkbox. Но есть одно: когда я нажимаю на флажок, css изменяется, но флажок сам по себе нет. Другой нежелательный результат возникает, когда я нажимаю на флажок, а затем на
было бы здорово, если бы вы сделали образец скрипки. удалите asp: элементы управления и просто создайте шаблон – krishgopinath
@shihandrana проверьте мой ответ. Надеюсь, он ответит на ваш вопрос. – krishgopinath
Смежные вопросы