Javascript 如何根据同一行td元素中的输入禁用一行的按钮?
我对JQuery/Javascript非常陌生,正在尝试在某些行中禁用带有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
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
使用布尔值作为参数,因此可以直接在参数中测试您的条件。