Tôi đang sử dụng jQuery v1.6.4. Đây là trường hợp thử nghiệm cho vấn đề của tôi:Vấn đề nhân bản jQuery 1.6.4 trong Internet Explorer 7
<!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>
Trong Mozilla Firefox và Internet Explorer 9 nó hoạt động như mong đợi: nhái clone-tpl hai lần, thay đổi id và gắn thêm các dòng vô tính để div container. Div container vẫn nguyên vẹn. Nhật ký đầu ra cảnh báo như sau:
<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
Nhưng trên trình duyệt Internet Explorer 7 nó messes mọi thứ lên với clone2, hãy nhìn những gì báo nói:
<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
Tôi không có ý tưởng, làm thế nào alert($('#clone-tpl').attr('id'))
có thể đột ngột cho cái gì khác hơn là clone-tpl? Sau khi tất cả, nếu tôi chọn phần tử bởi thuộc tính id clone-tpl, thuộc tính id PHẢI là bản sao-tpl, nhưng nó không phải là!
Điều gì là sai? Tại sao IE7 thay đổi id của nguồn nhân bản nếu tôi tạo một bản sao thứ hai?
Nhân tiện, nếu tôi hoàn nguyên về jQuery v1.4.2, IE7 bắt đầu nhân bản bình thường.
Đây có phải là lỗi trong jQuery v1.6.4 không? Có cách giải quyết nào không?
P.S. Tôi thực sự muốn tránh hoàn nguyên về 1.4.2 vì 1.6 có một số tính năng hữu ích giúp tôi khắc phục một số lỗi jQuery khác: http://bugs.jquery.com/ticket/5684?version=10.
có vẻ như đó là một lỗi http://stackoverflow.com/questions/7243384/jquery-clone-html-in-ie-bug – Mansuro
@Mansuro - cảm ơn, bạn là đúng. Tôi chỉ tìm thấy nó trong trang web theo dõi lỗi jQuery, chúng ta hãy hy vọng họ sẽ sửa chữa nó sớm. Trong khi đó tôi sẽ sử dụng Javascript native setAttribute, nó hoạt động tốt. – JustAMartin