【问题标题】:$(this).removeattr('disabled') not working in chrome$(this).removeattr('disabled') 在 chrome 中不起作用
【发布时间】:2018-12-27 13:37:42
【问题描述】:

我正在使用 $(this).removeattr('disabled') 从复选框中删除选中的属性,但它在 chrome 中不起作用。谁能帮我解决这个问题?

我也尝试过其他一些解决方案,例如 -

1) $(this).prop('checked', false)

2)$(this).removeAttr('checked')

3)$(this).attr('checked', false)

提前致谢。

【问题讨论】:

  • 我假设您使用的是removeAttr 而不是removeattr,就像您的第一个示例一样。但是,为什么去掉disabled属性会影响checkbox的checked属性呢?
  • 你的 this 一定是指错了
  • 你说它在 chrome 中不起作用。它可以在其他浏览器中使用吗?
  • 你的代码中的 $(this) 是什么,你能再展示一些相关的代码吗?
  • 解决方案在这里:stackoverflow.com/questions/426258/…

标签: jquery checkbox


【解决方案1】:

首先你需要了解"attr""prop"之间的区别

Here's a user's answer,主要是:

我将总结主要问题:

  • 您通常需要prop() 而不是attr()
  • 在大多数情况下,prop() 执行 attr() 过去所做的事情。在您的代码中用prop() 替换对attr() 的调用通常会 工作。
  • 属性通常比属性更容易处理。属性值只能是字符串,而属性可以是任何 类型。例如,checked 属性是布尔值,style property 是一个对象,每个样式都有单独的属性, size 属性是一个数字。
  • 如果同时存在同名的属性和属性,通常更新一个会更新另一个,但情况并非如此 对于输入的某些属性,例如valuechecked:对于 这些属性,属性总是代表当前状态 而属性(旧版本的 IE 除外)对应于 输入的默认值/检查性(反映在 defaultValue / defaultChecked 属性)。
  • 此更改移除了一些卡在属性和属性前面的魔术 jQuery 层,这意味着 jQuery 开发人员将不得不 了解一下属性和属性之间的区别。 这是一件好事。

现在没有名为"removeattr"的函数,它应该是"removeAttr",如果您使用的是旧版本的jquery(即

由于checked是元素的属性,所以使用.prop("checked",false)使其安全正确可以在所有浏览器中工作。

Another answer 变得更加实用:

jQuery 1.6+

使用新的.prop() 方法:

$('.myCheckbox').prop('checked', true);
$('.myCheckbox').prop('checked', false);

jQuery 1.5.x 及以下

.prop()方法不可用,需要使用 .attr().

$('.myCheckbox').attr('checked', true);
$('.myCheckbox').attr('checked', false);

注意这是the approach used by jQuery's unit tests prior to version 1.6,比使用更可取

$('.myCheckbox').removeAttr('checked');

【讨论】:

  • 感谢您的评论,但我使用的是 jquery 10,并且我已经使用了这两种方法。
  • 是的,它在 mozilla 浏览器中工作。感谢您的评论。但是我发现这是帖子的问题。实际上我正在使用 3 步表单 - 用户在第一页提交信息并使用第一页的帖子数组进入第二页,然后在第二页选择其他字段并转到最后一步。现在,如果用户返回第二页,那么用户会在第 1 步和第 2 步的帖子数组中发生冲突。– Vipul Jain 19 秒前
猜你喜欢
  • 2011-08-28
  • 2019-10-31
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多