我想知道1.9.1和2.0.2之间关于附加的jsFiddle的区别。
HTML:
<div id='M1' style='width:100%; border:1px solid red;'>Main Container</div>
JS:
// first method
$("#M1").append("<div>method 1</div>");
// second method
jQuery('<div/>', {
title: 'Method 2',
rel: 'external',
style: 'width:90%; border: 1px solid green;',
text: 'Method 2'
}).appendTo('#M1');
// third method
$('<div/>', {
'id':'myDiv',
'text':'Method 3',
}).on('click', function(){
alert(this.id); // myDiv
}).appendTo('#M1');
为什么它适用于jQuery 1.9.1,但不适用于2.0.2。
在2.0.2或2.0.3中可以使用的等效代码是什么
如果使用1.9.1运行示例,它可以正常工作,如果将id更改为2.0.2则不会
谢谢
答案 0 :(得分:1)
这似乎特定于jsFiddle,可能是它工作的框架环境。我可以用IE10 using jsFiddle复制你的结果,但是如果我使用jQuery v2.0.2和那个代码创建了我自己的页面,它就可以了。同样,JSBin上的相同页面也可以工作:Live Copy | Source
<!doctype html>
<html>
<head>
<meta charset="UTF-8">
<title>Scratchpad</title>
<script src="//code.jquery.com/jquery-2.0.2.js"></script>
</head>
<body>
<div id='M1' style="width:100%; border:1px solid red;">Main Container</div>
<script>
// first method
$("#M1").append("<div>method 1</div>");
// second method
jQuery('<div/>', {
title: 'Method 2',
rel: 'external',
style: 'width:90%; border: 1px solid green;',
text: 'Method 2'
}).appendTo('#M1');
// third method
$('<div/>', {
'id':'myDiv',
'text':'Method 3',
}).on('click', function(){
alert(this.id); // myDiv
}).appendTo('#M1');
</script>
</body>
</html>
所以从根本上说,没有问题,因为它确实有效......除了那个环境。
当小提琴失败时,我在IE10的Dev Tools中得到两个错误:
SCRIPT5: Access is denied. jquery-2.0.2.js, line 1378 character 2 SCRIPT5009: '$' is undefined show, line 20 character 1
这是上下文中的jQuery-2.0.2.js第1378行:
1375| // Support: IE>8 1376| // If iframe document is assigned to "document" variable and if iframe has been reloaded, 1377| // IE will throw "permission denied" error when accessing "document" variable, see jQuery #13936 1378| if ( parent && parent.frameElement ) { 1379| parent.attachEvent( "onbeforeunload", function() { 1380| setDocument(); 1381| }); 1382| }
再次,这表明jsFiddle环境特有的东西。可能值得检查jQuery问题跟踪器以查看它是否是已知问题,如果不是,则报告它。