【问题标题】:$("#someDiv").attr("scrollHeight") not working in jquery-1.6.1$("#someDiv").attr("scrollHeight") 在 jquery-1.6.1 中不起作用
【发布时间】:2011-05-31 23:52:29
【问题描述】:

$("#someDiv").attr("scrollHeight") 适用于所有浏览器的 jquery 1.3.2。但是在更新到 jquery 1.6.1 时,它只适用于 IE9。 Firefox 4.0.1、Google Chrome 11 和 Safari 5 都返回 undefined。 $("#someDiv").get(0).scrollHeight 但仍然适用于所有浏览器。

有人知道发生了什么吗?attr("scrollHeight") 在最新的 jquery(即 1.6.1 版)中被破坏了吗?

【问题讨论】:

  • .prop() vs .attr()的可能重复
  • 这并不是真正的重复,尽管这与答案有关。
  • 确实如此。并非同一主题的每个问题都是重复的,无论您回答这些问题有多无聊。
  • 根据comment here,$("#someDiv").get(0).scrollHeight 在 IE developer.mozilla.org/en/DOM/element.scrollHeight) 中不起作用
  • 看这里:quirksmode.org/dom/w3c_cssom.html - 对于 IE

标签: javascript jquery


【解决方案1】:

jQuery 1.6 引入了.prop 并改变了.attr 的含义。

Read all about it.

(总是值得先检查文档;the page for .attr 也谈到了这一点。)

【讨论】:

  • 所以.prop() 现在完成了.attr() 过去所做的大部分工作。 .attr() 现在返回标记中存在的值,因此在我的情况下,我没有从标记中设置 scrollHeight 属性,因此未定义结果。将我的解决方案更改为 $("#someDiv").prop("scrollHeight") 但是得到了预期的结果,因为它从 Dom 中检索了 scrollHeight 属性。
  • @adentum:听起来很对。这是一个可怕的大规模 API 更改,虽然出于善意并以逻辑为基础,但在 IMO 中来得太晚了。
  • @Tomalak 已经晚了,但还不算太晚。迟到总比没有好。
  • @BennettMcElwee:使用 API,通常最好不要迟到。
  • @Tomalak 是的,但这次不是!正如我所说,已经晚了,但还不算太晚。
猜你喜欢
  • 2016-11-02
  • 2012-09-21
  • 1970-01-01
  • 1970-01-01
  • 2012-08-16
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-08-28
相关资源
最近更新 更多