Jus*_*tin 5 jquery internet-explorer clone
我正在使用jQuery v1.6.4.以下是我的问题的测试用例:
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<script type="text/javascript" src="jquery.js"></script>
</head>
<body>
<div id="container"></div>
<div id="clone-tpl">I am a clone template</div>
<script type="text/javascript">
$(function(){
var clone = $('#clone-tpl').clone();
clone.attr('id','other'+Math.random());
clone.text('I am a clone');
$('#container').append(clone);
alert($('#container').html());
alert($('#clone-tpl').attr('id'));
var clone2 = $('#clone-tpl').clone();
clone2.attr('id','other'+Math.random());
clone2.text('I am a clone 2');
$('#container').append(clone2);
alert($('#container').html());
alert($('#clone-tpl').attr('id'));
});
</script>
</body>
</html>
Run Code Online (Sandbox Code Playgroud)
在Mozilla Firefox和Internet Explorer 9中,它按预期工作:克隆clone-tpl两次,更改id并将克隆附加到容器div.容器div保持完整.警报输出日志如下:
<div id="other0.7574357943876624">I am a clone</div>
clone-tpl
<div id="other0.7574357943876624">I am a clone</div><div id="other0.1724491511655708">I am a clone 2</div>
clone-tpl
Run Code Online (Sandbox Code Playgroud)
但是在Internet Explorer 7上它与clone2混淆了一下,看看警告说:
<DIV id=other0.1851332940530379>I am a clone</DIV>
clone-tpl
<DIV id=other0.1851332940530379>I am a clone</DIV><DIV id=clone-tpl>I am a clone 2</DIV>
other0.6041996510541515
Run Code Online (Sandbox Code Playgroud)
我不知道,怎么alert($('#clone-tpl').attr('id'))能突然发出比clone-tpl更重要的东西?毕竟,如果我按id属性clone-tpl选择元素,id属性必须是clone-tpl,但它不是!
怎么了?如果我创建第二个克隆,为什么IE7会更改克隆源的ID?
顺便说一下,如果我回到jQuery v1.4.2,IE7会正常开始克隆.
这是jQuery v1.6.4中的错误吗?它有什么解决方法吗?
PS我真的想避免恢复到1.4.2,因为1.6有一些有用的功能可以帮助我克服其他一些jQuery错误:http://bugs.jquery.com/ticket/5684?version = 10.
我也遇到了 IE 克隆问题
当厌倦了 bug 时,最后不得不为 IE 编写自己的简单克隆。它不通用,也不出色,但在这种情况下它不能做太多事情,IE 很糟糕。
可以根据自己的需要进行修改。
function shimNode(jqObj){
var html = jqObj.html();
var id = jqObj[0].id;
var classes = jqObj.attr('class');
var styles = jqObj.attr('style');
var pattern = ['<div id="',id,'" class="',classes,'" style="',styles,'">',html,'</div>'].join('');
return jQuery(pattern);
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
1394 次 |
| 最近记录: |