【问题标题】:Why doesn't attr(attributeName, value) create a new Attr object in the DOM attributes NamedNodeMap?为什么 attr(attributeName, value) 不在 DOM 属性 NamedNodeMap 中创建新的 Attr 对象?
【发布时间】:2010-12-13 08:04:12
【问题描述】:

我可以通过这样做来更改 HTMLOptionElement 的 value 属性:

sizeOptionToBeSelected.attr('value', '555');

它从同一个 HTMLOptionElement 对象更改 HTMLOptionElement 的 value 属性和 NamedNodeMap attributes 属性中的 DOM Attr 对象中的值。

但是,我无法使用以下代码创建新的 Attr “selected”或更改 HTMLOptionElement 的 selected 属性

sizeOptionToBeSelected.attr('selected', 'true');

你认为这是为什么?我该怎么做?

来自 jquery 文档:

我们可以添加一个相同的属性 方法: $('#greatphoto').attr('title', 'Kelly Clark 摄');

补充说明:
- 代码在 $(document).ready( 函数内运行,因此加载没有问题。
- 我使用的是最新的 Google Chrome 8.0.552.215 beta。

亲切的问候,
暴君

【问题讨论】:

  • 虽然我解决了 jQuery 的 attr 方法的工作原理,但提供一些线索来说明我为什么要这样做是个好主意(我认为这对其他用户会很有用)。我从选择标签中删除了所有选项,并填充了新选项。这个想法是让之前选择的选项再次被选中。正确的做法是: $('#selectId').val(theSelectedOptionValue);更多信息,请查看:stackoverflow.com/questions/927656/…

标签: jquery attributes attr


【解决方案1】:

jQuery,有点令人困惑,倾向于将属性和属性视为同一事物。所以$(elem).attr('selected', true) 实际上是将elemselected 属性设置为true,而不是它的属性。

很少有理由需要设置selected 属性。设置selected(和defaultSelected属性就足够了。

另外,请记住selected 属性对应于默认状态,而不是当前状态。

【讨论】:

  • 在发帖之前我还阅读了stackoverflow.com/questions/3953028/…。我应该知道 jQuery 无法创建 Attr DOM 对象。另一件事是 jQuery 的声明“我们可以用同样的方式添加一个属性:$('#greatphoto').attr('title', 'Photo by Kelly Clark');”不正确。应该只说“更改”或“设置”,而不是“添加属性”。这给我造成了困惑。无论如何,谢谢。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2015-02-25
  • 1970-01-01
  • 1970-01-01
  • 2012-06-28
  • 1970-01-01
  • 2012-10-13
  • 2017-03-30
相关资源
最近更新 更多