为啥 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,您不能合理地期望它们在浏览器中以任何特定方式运行。 将您的自定义标签重写为&lt;span class="myCustomTag"&gt;..&lt;/span&gt;。这样您就可以搜索它们并且它们不会影响布局。 @William — 我说黑客可能会为你想要的东西工作。我只是没有这方面的经验,因为除了让abbr 工作之外,我从来没有使用过它,也从来不需要获取abbr 元素的innerHTML,只是为了应用样式。【参考方案2】:

对于 IE,你需要把它放在你的标签中 -> xmlns='mytag'

<mytag xmlns='mytag'>
  Just Some Text
</mytag>

现在 IE 和所有其他浏览器都可以“看到”您的标签

【讨论】:

以上是关于为啥 jQuery .html() 方法不适用于 IE8 中的自定义标签?的主要内容,如果未能解决你的问题,请参考以下文章

为啥 jQuery 选择器适用于 Chrome,但不适用于 Safari?

为啥向左滑动不适用于 Jquery mobile?

为啥 JQuery keydown 适用于窗口而不适用于文本框?

为啥以下创建 DOM 元素的方式不适用于 IE7 和 IE8 中的 jQuery?

为啥我的 jquery 表单验证不适用于 IE7?它适用于 FF、Opera、Safari 等

为啥数据表不适用于gridview? [复制]