Как отключить кнопку одной строки на основе ввода в td-элемент в той же строке?

0

Я новичок в 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 Я не могу воспроизвести проблему в этом скрипте)

  • 1
    Используйте .prop вместо .attr : $(this).find('.settle-button').prop('disabled', true);
  • 0
    Спасибо, это хороший совет! Другие советы очень приветствуются, так как я хочу изучать хорошие практики.
Показать ещё 1 комментарий
Теги:

1 ответ

1
Лучший ответ

ваше утверждение 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()

  • 0
    Сначала он работал в Fiddle, но не работал в моем реальном веб-приложении. Я узнал, что это потому, что я поместил значение в элемент <span>. При предоставлении span-элементов класса итогов, проблема была решена. Большое спасибо!
  • 0
    Скорее всего, они генерируются при загрузке страницы или в определенный момент (событие)?
Показать ещё 8 комментариев

Ещё вопросы

Сообщество Overcoder
Наверх
Меню