id=“nodeName” 是否保留在 html5 中
Is id="nodeName" reserved in html5?
我正在使用:
<span id="nodeName"></span>
在我的 HTML 中,然后让 jQuery 做:
$("#nodeName").html("someString");
然后,控制台说:
Uncaught TypeError: Object #<HTMLSpanElement> has no method 'toLowerCase'
我更改 id 后,它工作正常。那么,是否有任何保留 ID?
不,几乎任何字符串都是有效的 ID。这只有在你包含jQuery(1.xx版本,而不是2.xx版本(时才会发生。
更多详情 :
- 代码工作,如"它更改内部HTML">
- 一旦你包含了jQuery,即使你不使用它,你也会在
acceptData
中出现错误,当DOM准备好时,但在你传递给$(document).ready
的回调被执行之后。
这是一个jQuery错误。为什么会发生这种情况似乎是由于window.nodeName
被定义为这个元素(它没有toLowerCase方法,因为它是一个元素(,因为具有此ID的元素存在。在jQuery 2.02中似乎还可以。
它在以下函数中失败:
acceptData: function( elem ) {
// Do not set data on non-element because it will not be cleared (#8335).
if ( elem.nodeType && elem.nodeType !== 1 && elem.nodeType !== 9 ) {
return false;
}
var noData = elem.nodeName && jQuery.noData[ elem.nodeName.toLowerCase() ];
// nodes accept data unless otherwise specified; rejection can be conditional
return !noData || noData !== true && elem.getAttribute("classid") === noData;
}
具体到通话elem.nodeName.toLowerCase()
,当elem === window
.当你在页面中包含jQuery时,即使你从未在Javascript中选择该元素,也会调用它。
原因是jQuery会检查一下,一旦jQuery准备就绪,哪些元素可以处理data-attributes
。在该检查期间,它会调用 window
元素上的 acceptData 函数。
这在最新版本的jQuery 1中,自版本1.8.0开始,直到并包括最新的1.10.1。该错误似乎是由jQuery 1.8中的以下更改引入的:
$(element(.data("events"(:在1.6版本中,jQuery将其内部数据与用户数据分开,以防止名称冲突。但是,有些人正在使用内部未记录的"事件"数据结构,因此我们仍然可以通过.data((检索它。现在在 1.8 中删除了它,但您仍然可以通过 $._data(元素,"events"(获取事件数据以进行调试。请注意,这不是受支持的公共接口;实际数据结构可能因版本而异,变化不兼容。
窗口在版本 1.8.0 中作为第 2939 行的cur
传递到jQuery._data
中,以检查窗口对象上的内部"事件"数据。当 jQuery 触发$(document).ready
$(window).ready
事件时,就会发生这种情况。由于窗口不是 DOM 节点,因此根本不应该在窗口上调用数据。
handle = ( jQuery._data( cur, "events" ) || {} )[ event.type ] && jQuery._data( cur, "handle" );
我创建了一个错误报告
- 分派点击事件并保留击键修饰符
- Canvas Html5绘图应用程序,移动画布会导致重大问题
- 如何使用phaser使html5游戏在移动设备浏览器上运行
- HTML5音频加载和播放获胜'我不能在iPad上工作
- HTML5页面底部棒
- Google/html5语音识别JavaScript SDK Chrome网络工具包SpeechRecognition
- 如何使用jquery强制一个单词更改大小写等以保留品牌
- Is onfling available for html, html5
- 提交后保留下拉选择的值
- 为什么HTML5拖放的目标是孩子?(可排序列表)
- 安卓平台上的QWebView HTML5地理位置
- HTML5在画布中加载较小的图像并保存实际大小的图像
- 刷新后保留对网页的更改
- 在mvc应用程序中,在回发时保留最初隐藏的文本框的隐藏或可见状态
- Flash Uploadify在调用我的MVC控制器时没有保留会话/授权
- 如何检查用户在html5视频播放器中观看了完整的视频
- 在 HTML5 画布中绘制图像,同时保留图像
- JQuery 从第二个零开始播放 html5 视频,但如果用户暂停视频,则保留当前帧
- 将 HTML5 数据属性保留在本地存储中
- 将HTML5控件保留在屏幕上