Javascript 如何根据同一行td元素中的输入禁用一行的按钮?

Javascript 如何根据同一行td元素中的输入禁用一行的按钮?,javascript,jquery,html,Javascript,Jquery,Html,我对JQuery/Javascript非常陌生,正在尝试在某些行中禁用带有class=“settle button”的按钮,这些行是根据带有class=“total”的td元素的值放置在动态生成的表中的 我想出了以下代码: $(function () { $('table tr').each(function () { if ($(this).find('.total').val() == 0.00) { $(this).find('.settle

我对JQuery/Javascript非常陌生,正在尝试在某些行中禁用带有
class=“settle button”
的按钮,这些行是根据带有
class=“total”
的td元素的值放置在动态生成的表中的

我想出了以下代码:

$(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,则此代码将禁用所有按钮。如何使此代码仅更改当前行中的按钮?还有其他方法可以改进吗


(顺便说一句,我无法在这里重现这个问题)

如果您的
声明读错了
.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

从jQuery1.6开始,.attr()方法返回未定义的属性 这还没有确定。检索和更改DOM属性,如 表单元素的选中、选中或禁用状态使用 .prop()方法


使用
.prop
而不是
.attr
$(此项)。查找('.settle button')。prop('disabled',true)谢谢,这是一个很好的提示!其他的建议非常受欢迎,因为我想学习好的实践。我自己有一个建议:其他部分是不必要的。哎呀。起初它在小提琴上工作,但在我真正的web应用程序中却不起作用。我发现这是因为我将值放在了“”元素中。在给跨度元素一类总长度的同时,问题得到了解决。谢谢!更有可能的是,它们是在页面加载时生成的还是在给定时间(事件)生成的?它们是在页面加载时生成的。您的代码可以这样缩短:
$(this).find('.settle button').prop('disabled',$(this).find('.total').html()==0.00)。但是它对于OP.@user2609980执行
$(this.find('.total').html()==0.00
返回true或false可能太“高级”。在示例中,如果您执行
var test=$(this).find('.total').html()==0.00;console.log(test)//=>true或false
。由于
.prop
使用布尔值作为参数,因此可以直接在参数中测试您的条件。