jquery在IE中使用append没有反映?

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了jquery在IE中使用append没有反映?相关的知识,希望对你有一定的参考价值。

var username=$("#regist_username")
$("#regist_username").blur(function()
if (username.val().length <6 || username.val().length>16)
$("#username_msg").empty().append("用户名长度必须位于6~16位"); (问题出在这一句,在IE死后没有反映,而在FIREFOX或者其他浏览器上都OK执行,跪求解决方案了....谢谢,在我的项目中很大一部分代码需要用到append这方法,可IE..............)

<h>Username </h> <input type="text" name="username" id="regist_username">
<h id="username_msg"> </h>

append方法在IE下是可以用的。
你这里不能用的原因,我估计是那个h标签的问题。
我之前用过许多自定义标签,然后用jquery控制他们,但是jquery似乎对自定义标签不支持。
所以你这里的h标签改为其他的,如:div或p... 试试
参考技术A 其实你大可不必这么写,你这么写是不行的
你可以改成
$("#username_msg").html('xxx');
就是直接修改ID=username_msg的innerHTML,不需要清空

jQuery - 在使用 append() 附加子节点时 - 附加的 xml 标记在 Internet Explorer 11 中转换为小写

【中文标题】jQuery - 在使用 append() 附加子节点时 - 附加的 xml 标记在 Internet Explorer 11 中转换为小写【英文标题】:jQuery - On appending child node using append()- appended xml tags are converted to lowercase in Internet Explorer 11 【发布时间】:2021-09-25 02:28:35 【问题描述】:

问题陈述:

我正在尝试在 IE 浏览器中使用 jQuery 使用 append() 将子节点附加到父 XML 节点。 在尝试中,我发现 append() 不会将任何元素添加到 XML 节点中,并且子节点返回为空。

在故障排除时,我发现这是 IE 的一个已知问题,我在这里找到了这篇文章 - IE - JQuery appending child nodes to XML in $.each loop。

使用本文中建议的解决方案后,我现在可以将子节点附加到父节点。 但是子节点的XML标签都是小写的,如下所示:

当前结果:

<Content>
     <ParentNode>
          <childrennode>
               <child1>true</child1>
               <child2>Hello</child2>
          </childrennode>
     </ParentNode>
</Content>

预期结果

<Content>
     <ParentNode>
          <ChildrenNode>
               <Child1>true</Child1>
               <Child2>Hello</Child2>
          </ChildrenNode>
     </ParentNode>
</Content>

var contentXML =('<Content><ParentNode></ParentNode></Content>');
var node = $.parseXML(contentXML)
var nodeXML = $(node).find('Content > ParentNode');
var value1 = true;
var value2 = "Hello";
var childNodeinIE = $('<ChildrenNode><Child1>' + value1 + '</Child1>'+ '<Child2>'+ value2 +'</Child2>'+'</ChildrenNode>');
nodeXML.append(childNodeinIE);
console.log($(nodeXML).find("Content > ParentNode > ChildrenNode").text());
console.log($(nodeXML).find("Content > ParentNode > childrennode").text());
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/2.2.2/jquery.min.js"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/moment.js/2.27.0/moment.min.js"></script>

我知道我也可以使用:

 $(contentXML).find("Content > ParentNode > ChildrenNode > Child1").text(value1);

但是,我想附加它并且不想覆盖这些值。

有人可以建议如何保留预期结果中显示的 XML 标记吗?

【问题讨论】:

嗨,你能先修复你的代码 sn-p 吗?我没有从中看到任何东西。 这能回答你的问题吗? i have been using jQuery to parse XML but it doesnt maintain uppercase. Is there a flag im missing? 我已经更新了 sn-p。这个问题现在可以重现了。 @freedomn-m,不幸的是,建议帖子中的解决方案似乎适用于 Chrome,但不适用于 IE。 :( 根据链接的答案:您已将第一个 contentXML 更改为 $.parseXML - 但您的 second $('&lt;ChildrenNode&gt;&lt;Child1&gt;' + value1 仍被 jquery 解析为 HTML i>,所以将是小写。当您立即使用 .append(childNode) 时,它不需要是 jquery 对象,因此更改为 var childNodeinIE = '&lt;ChildrenNode&gt;&lt;Child1&gt;'(没有将 jquery 解析为 HTML)并且它工作正常。 【参考方案1】:

要在 IE 中完成这项工作,我必须使用 appendTo()。

例如:

childNodeinIEXML = $($.parseXML(childNodeinIE)).find("ChildrenNode");
childNodeinIEXML.appendTo(nodeXML)

【讨论】:

以上是关于jquery在IE中使用append没有反映?的主要内容,如果未能解决你的问题,请参考以下文章

jQuery、html5、append()/appendTo() 和 IE

IE8 没有在 jQuery 地址中执行子字符串

jQuery掷骰子

如何使用 jQuery 在 IE 中附加样式表?

jQuery ajax 动态append创建表格出现不兼容ie8

jQuery - 在使用 append() 附加子节点时 - 附加的 xml 标记在 Internet Explorer 11 中转换为小写