手机版

解决IE7中使用jQuery动态操作名字的问题

时间:2021-09-03 来源:互联网 编辑:宝哥软件园 浏览:

问题:在IE7中,Jquery不能用来动态操作页面元素的name属性。

项目存在问题,部分客户的机器偶尔出现问题,后台无法得到前台的数据值。

然而,开发和测试环境永远无法重现这个问题。这就是诀窍。如果不能重现,就不能调试。你不可能知道换了之后会不会有这样的问题。

考虑到与客户环境的唯一区别是js缓存问题,然后在js文件引用的所有地方添加一个当前时间参数,但是问题仍然存在。

本来规定的版本是IE8,没想到会出现版本兼容问题。当我说我们在用jquery的时候,jqeruy的出现声称解决了浏览器的兼容性问题。

该死的问题,也是真正的版本问题。因为有些页面需要使用IE8兼容模式,但是兼容模式其实就像兼容性一样,不是和IE7兼容吗?

所以我用demo在本地测试了一下。

form id=' form 1 ' runat=' server ' div id=' div ' input id=' input ' name=' 1 ' value=' 123 '/div/form script src=' http : jquery-1 . 6 . 4 . min . js '/script script $(' # input ')。attr('name ',' my name ');警报(' name:' $('#input ')。attr(' name ')' * * * html : ' $(' # div ')。html());/scriptIE8:

好的。

IE8兼容模式:

?为什么是$('#input ')。attr('name ')获取修改后的值,而$('#div ')。html()获取原始值?

F12查看生成的html

什么是submitName?显然这个名字没有变。submitName应该由jquery生成,然后在读取名称时也直接读取submitName值。

那么为什么$(“# div”)取的值中没有submitName。html()?也不知道jquery中的html方法是怎么实现的~ ~

项目中的实现类似于:

表单id=' form 1 ' runat=' server ' div id=' div ' input id=' input ' name=' 1 ' value=' 123 ' type=' text '/div id=' div 2 '/div/表单脚本src=' http : jquery-1 . 6 . 4 . min . js '/脚本脚本//alert('name:' $('#input ')。attr(' name ')' * * * html : ' $(' # div ')。html());$('#input ')。attr('name ',' my name ');$('#div2 ')。html($('#div ')。html());var nameVal=$('#div2 ')。find('input[name='myname']')。val();警报(NameVal);/script在IE8和Google浏览器中有一个正常值,但在IE8兼容模式下无法获取值。[不要问你为什么要这样赋值,这是演示的实现‘类似于’,是一个框架]

解决方案:

1.直接用jquery修改名称,然后访问名称就可以了,虽然submitName是在中间生成的。

2.您可以从$('#div2 ')开始。html($('#div ')。html());然后修改。attr('name ',' my name ');

3.html可以直接拼接。$('#div ')。html(' input id=' input ' name=' my name ' value=' 123 ' type=' text '/')

最后百度发现IE7无法用document.getElementsByName()访问动态创建和修改的js名称值。

摘要

以上就是边肖介绍的IE7中使用jQuery动态操作名字问题的解决方案。希望对大家有帮助。如果你有任何问题,请给我留言,边肖会及时回复你。非常感谢您对我们网站的支持!

版权声明:解决IE7中使用jQuery动态操作名字的问题是由宝哥软件园云端程序自动收集整理而来。如果本文侵犯了你的权益,请联系本站底部QQ或者邮箱删除。