1

我想知道 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');

http://jsfiddle.net/Dzbza/5/

为什么它适用于 jQuery 1.9.1 但不适用于 2.0.2。

在 2.0.2 或 2.0.3 中工作的等效代码是什么

如果您使用 1.9.1 运行示例,它可以正常工作,如果您将 id 更改为 2.0.2 它不会

谢谢

4

1 回答 1

1

这似乎特定于 jsFiddle,可能是它工作的框架环境。我可以使用 jsFiddle使用 IE10 复制您的结果,但是如果我使用 jQuery v2.0.2 和该代码创建自己的页面,它就可以工作。同样,JSBin 上的同一页面也可以使用:Live Copy | 资源

<!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 的开发工具中收到两个错误:

SCRIPT5:访问被拒绝。
jquery-2.0.2.js,第 1378 行字符 2
SCRIPT5009:“$”未定义
显示,第 20 行字符 1

这是上下文中的 jQuery-2.0.2.js 第 1378 行:

1375| // 支持:IE>8
1376| // 如果 iframe 文档被分配给“document”变量并且 iframe 已经被重新加载,
1377| // IE 在访问 "document" 变量时会抛出 "permission denied" 错误,参见 jQuery #13936
1378| if ( 父 && parent.frameElement ) {
1379| parent.attachEvent(“onbeforeunload”,函数(){
1380| 设置文档();
1381| });
1382| }

因此,这再次暗示了 jsFiddle 环境特有的一些东西。可能值得检查 jQuery 问题跟踪器以查看它是否是已知问题,如果不是,请报告它。

于 2013-11-03T22:45:25.607 回答