为啥 jQuery .html() 方法不适用于 IE8 中的自定义标签?
Posted
技术标签:
【中文标题】为啥 jQuery .html() 方法不适用于 IE8 中的自定义标签?【英文标题】:Why doesn't the jQuery .html() method work with custom tags in IE8?为什么 jQuery .html() 方法不适用于 IE8 中的自定义标签? 【发布时间】:2011-01-26 18:20:57 【问题描述】:我有以下html代码:
<mytag>
Just Some Text
</mytag>
我有这个 jQuery 命令
$('mytag').each(function () alert($(this).html()); );
在除 IE 之外的所有浏览器中,我都获得了内部 HTML,而在 IE 中却没有。任何人都可以解开这个谜团吗?我已经用 IE8、Mozilla、Opera、Chrome 和 Safari 对此进行了测试
【问题讨论】:
你要的是不是 HTML 的东西的 innerHTML。 【参考方案1】:因为 Internet Explorer 不会像您测试代码的其他浏览器那样错误纠正特定类型的无效 HTML。 p>
我想你可以通过以下方式破解它(它适用于应用 CSS):
document.createElement('mytag')
...但最好还是编写 HTML(或编写 XML 并将其作为 application/xml 提供)。
【讨论】:
不幸的是,我不仅仅需要将 CSS 应用到这个标签上。我需要提取它的 innerHTML 并对其进行操作,我确实需要使用自定义标签。 +1 “自定义标签”不是 HTML,您不能合理地期望它们在浏览器中以任何特定方式运行。 将您的自定义标签重写为<span class="myCustomTag">..</span>
。这样您就可以搜索它们并且它们不会影响布局。
@William — 我说黑客可能会为你想要的东西工作。我只是没有这方面的经验,因为除了让abbr
工作之外,我从来没有使用过它,也从来不需要获取abbr
元素的innerHTML,只是为了应用样式。【参考方案2】:
对于 IE,你需要把它放在你的标签中 -> xmlns='mytag'
<mytag xmlns='mytag'>
Just Some Text
</mytag>
现在 IE 和所有其他浏览器都可以“看到”您的标签
【讨论】:
以上是关于为啥 jQuery .html() 方法不适用于 IE8 中的自定义标签?的主要内容,如果未能解决你的问题,请参考以下文章
为啥 jQuery 选择器适用于 Chrome,但不适用于 Safari?
为啥 JQuery keydown 适用于窗口而不适用于文本框?
为啥以下创建 DOM 元素的方式不适用于 IE7 和 IE8 中的 jQuery?