Я новичок в JQuery/Javascript и пытаюсь отключить кнопку с помощью class="settle-button"
в некоторых строках, которые помещаются в динамически сгенерированную таблицу на основе значения td-элемента с class="total"
Это.
Я придумал следующий код:
$(function () {
$('table tr').each(function () {
if ($(this).find('.total').val() == 0.00) {
$(this).find('.settle-button').attr('disabled', 'disabled');
}
else {
$(this).find('.settle-button').removeAttr('disabled');
}
});
});
К сожалению, этот код отключает ВСЕ кнопки, если только один из них составляет 0,00. Как этот код можно изменить, чтобы изменить только кнопку в текущей строке? И есть ли другие способы его улучшения?
(PS Я не могу воспроизвести проблему в этом скрипте)
ваше утверждение if
неверно. .val()
используется для получения значения элемента формы, ввода, выбора и т.д. использовать .html()
для проверки на текст в TD.
Попробуй это -
$(function () {
$('table tr').each(function () {
if ($(this).find('.total').html() == 0.00) {
$(this).find('.settle-button').prop('disabled', true);
}
else {
$(this).find('.settle-button').prop('disabled', false);
}
});
});
Вот скрипта обновления
Хороший момент, сделанный Карлом-Андреем - используйте .prop
.
Начиная с jQuery 1.6, метод.attr() возвращает undefined для атрибутов, которые не были установлены. Чтобы получить и изменить свойства DOM, такие как проверенные, выбранные или отключенные состояния элементов формы, используйте метод.prop().
.prop
вместо.attr
:$(this).find('.settle-button').prop('disabled', true);