#javascript #jquery
#javascript #jquery
Вопрос:
У меня есть 3 функции Jquery. Это первая функция, которая позволяет установить только один флажок
$('input[type="checkbox"]').on('change', function () {
$('input[type="checkbox"]').not(this).prop('checked', false);
});
Это вторая функция, которая позволяет установить флажок, щелкнув строку.
$(document).ready(function () {
$('.boekTable tr').click(function (event) {
if (event.target.type !== 'checkbox') {
$(':checkbox', this).trigger('click');
}
});
Это третья функция, которая выделяет выделенную строку.
$("input[type='checkbox']").change(function (e) {
if ($(this).is(":checked")) {
$(this).closest('tr').addClass("highlight_row");
} else {
$(this).closest('tr').removeClass("highlight_row");
}
});
});
Проблема: я выбираю строку, затем третья функция выделяет ее, и когда я выбираю другую строку, она продолжает выделяться, пока я не щелкну выделенную строку. Как я могу это исправить? Должен ли я использовать другую функцию вместо closest? Спасибо.
Комментарии:
1. Вы пробовали
e.stopPropagation()
?2. Почему вы не используете radio, чтобы разрешить только один флажок?
Ответ №1:
Это простое изменение, позволяющее заставить его работать так, как вы хотите…
$("input[type='checkbox']").change(function (e) {
if ($(this).is(":checked")) {
// this will remove all highlights before adding a new one
$(this).closest('table').find('tr').removeClass("highlight_row");
$(this).closest('tr').addClass("highlight_row");
} else {
$(this).closest('tr').removeClass("highlight_row");
}
});
});
Комментарии:
1. @Atti остальное вам сейчас не нужно, смотрите мой ответ 🙂
2. Не беспокойтесь — рад помочь 🙂
Ответ №2:
Обновите третий до чего-то подобного:
$("input[type='checkbox']").change(function (e) {
$(this).closest('table').find('tr').removeClass('highlight_row');
if ($(this).is(":checked")) {
$(this).closest('tr').addClass("highlight_row");
}
});
Ответ №3:
удалите highlight_row из остальных
$("input[type='checkbox']").change(function (e) {
$('tr').removeClass("highlight_row");
if ($(this).is(":checked")) {
$(this).closest('tr').addClass("highlight_row");
}
});
});
Ответ №4:
Вам нужно удалить class для других trs. Вы можете использовать функцию siblings.
$("input[type='checkbox']").change(function (e) {
if ($(this).is(":checked")) {
$(this).closest('tr').addClass("highlight_row");
$(this).closest('tr').siblings().removeClass("highlight_row");
} else {
$(this).closest('tr').removeClass("highlight_row");
}
});
});