jQuery 1.1.4:更快、更多测试,为 1.2 做准备
我们很高兴地宣布最新版本的 jQuery:jQuery 1.1.4。 除非出现严重的错误,否则该版本将是 1.1.x 分支的最后一个版本——引导我们进入 9 月份发布的 jQuery 1.2。
您可以从 jQuery Google Code 页面下载该版本
下载
改进
除了所有常规的 错误修复 外,此版本还进行了多项改进。
任意名称 jQuery
jQuery 迈出了重要一步,成为第一个完全能够重命名自身的 JavaScript 库。 以前,提供了重命名经常使用的“$”快捷方式以代表“jQuery”的功能——但现在您也可以重命名“$”和“jQuery”。 这带来了两个极佳的结果
- 您现在可以在同一页面上同时包含多个版本的 jQuery。
- 您现在可以将 jQuery 嵌入到其他对象和库的命名空间中,例如
// With the Dojo Toolkit dojo.jquery = jQuery.noConflict(true); dojo.jquery("#elem div").slideDown("slow"); // or with Yahoo UI YAHOO.query = jQuery.noConflict(true); YAHOO.query("span.hidden").removeClass("hidden");
速度改进
没有一些速度改进,版本发布还有什么意义呢? 我们借此机会超越了以前发布的所有速度测试套件,并提高了 jQuery 中三个最常使用部分的速度:ID 选择器、标签名选择器和 each() 循环。 这些项目的速度必须尽可能快,因为它们可能被无限次地重复使用。
以下是用于分析这三个更改速度的 测试套件。
$(“#id”) 改进
浏览器 | jQuery 1.1.3 | jQuery 1.1.4 | 改进百分比 |
---|---|---|---|
IE 6 | 651ms | 70ms | 830% |
Firefox 2 | 1355ms | 27ms | 4919% |
Safari 3 | 101ms | 14ms | 620% |
Opera 9 | 270ms | 62ms | 335% |
平均改进 | 1676% |
$(“elem”) 改进
浏览器 | jQuery 1.1.3 | jQuery 1.1.4 | 改进百分比 |
---|---|---|---|
IE 6 | 661ms | 451ms | 47% |
Firefox 2 | 1717ms | 143ms | 1100% |
Safari 3 | 99ms | 83ms | 19% |
Opera 9 | 226ms | 198ms | 14% |
平均改进 | 295% |
.each() 改进
浏览器 | jQuery 1.1.3 | jQuery 1.1.4 | 改进百分比 |
---|---|---|---|
IE 6 | 200ms | 30ms | 567% |
Firefox 2 | 468ms | 29ms | 1514% |
Safari 3 | 17ms | 11ms | 54% |
Opera 9 | 45ms | 25ms | 80% |
平均改进 | 554% |
测试套件大修
这是一个非常重要的消息——对于大多数开发者来说尤其如此。 jQuery 测试套件 从根本上进行了彻底的重新设计和改进,以提高稳定性。 一套全新的动画和 Ajax 测试已集成到其中,使 jQuery 的总测试次数达到800 多项!
此外,测试套件 在我们支持的所有主要浏览器中均通过测试,没有错误:Firefox 2、Safari 3、Internet Explorer 6 和 Opera 9(出于简洁性考虑,未显示 Safari 2 和 IE 7)。 证明
将来,我们正在努力提高对 jQuery 中事件、属性和 CSS 部分的覆盖范围——毫无疑问,很快就会达到 1000 多项测试。
此外,需要注意的是,jQuery 测试套件现在已嵌入到 Mozilla 测试套件中——针对即将发布的 Firefox 3 版本的每次提交进行测试。 您可以放心,在最新版本的 Firefox 中,一切都将按预期运行。
错误修复
此版本已修复 53 张工单。 您可以在 错误跟踪器 上查看所有详细信息(包括针对 jQuery 1.1.3.1 的修复)。
已解决大量重大问题,包括与 HTML 脚本评估、Safari CSS 计算样式访问和 Ajax 设置操作相关的问题。
新功能
已引入了一些新功能。 其中前两个,.slice() 和 :has(),将成为 jQuery 1.2 的一部分,但它们的存在是由于一些已弃用的功能(见下文)。 对 extend() 和 noConflict() 的新更改是为了能够修复 jQuery 中一些长期存在的错误。
.slice()
您可能在 JavaScript 数组中存在的 .slice() 方法中认出了这个方法名称——您很幸运,因为它行为完全相同。 这是一个将 jQuery 对象拆开并获取其内部元素的好方法。 以下所有都是使用 slice() 方法的有效方法
$("div").slice(0,1); // First div $("div").slice(-1); // Last div $("div").slice(1,-1); // All divs but the first and last $("div").slice(1,3); // The second and third div $("div").slice(7,8); // The eighth div
:has()
此新选择器是当前检查其他元素内部元素的方式的替代方法(div[p])。 您现在可以使用此选择器,就像使用该特定 XPath 选择器一样,例如
// All divs with a paragraph inside $("div:has(p)") // All anchors with an image inside $("a:has(img)") // All divs that have an anchor inside that have an image inside $("div:has(a:has(img))")
深度递归.extend()
这是 jQuery .extend() 方法的一个经常被请求的补充。 此更改允许您深度合并嵌套对象(而不是让它们相互覆盖)。 这最好通过一个示例来演示
// Normal .extend() jQuery.extend( { name: "John", location: { city: "Boston" } }, { last: "Resig", location: { state: "MA" } } ); // Result: // => { name: "John", last: "Resig", location: { state: "MA" } }
// New Deep .extend() jQuery.extend( true, { name: "John", location: { city: "Boston" } }, { last: "Resig", location: { state: "MA" } } ); // Result: // => { name: "John", last: "Resig", // location: { city: "Boston", state: "MA" } }
.noConflict(true)
如前所述,此 .noConflict() 的补充允许您完全重命名“jQuery”命名空间和“$”快捷方式,同时还回滚这些引入可能进行的任何更改。 您可以像这样使用此新快捷方式
// Give jQuery a custom name: var jq = jQuery.noConflict(true); jq("#id div").hide(); // Both Fail - $ and jQuery have been renamed: $("#id div").hide(); jQuery("#id div").hide();
此技巧还可以用于将 jQuery 推送到现有的命名空间中,例如
// Put jQuery in a namespace: var obj = {}; obj.jq = jQuery.noConflict(true); obj.jq("#id div").hide();
已弃用的功能
为了准备即将发布的 jQuery 1.2 中的 API 更改,我们在 jQuery 1.1.4 中弃用了一些方法。 只要可能,我们都提供了执行操作的替代方法。
与 jQuery 1.1 版本一样,jQuery 1.2 将提供一个向后兼容插件。 因此,如果您希望继续使用这些特定技术,您可以使用该插件并继续这样做。
此外,为了处理 XPath 更改,将发布另一个独立的插件来处理 jQuery 中的 XPath 选择器功能。 该插件将与 jQuery 1.2 一起发布。
选择器
$("div//p") XPath 后代选择器
请改用 CSS$("div p")选择器。 或者,在发布 jQuery 1.2 后,使用新的 XPath 插件。
$("div/p") XPath 子选择器
请改用 CSS$("div > p")选择器。 或者,在发布 jQuery 1.2 后,使用新的 XPath 插件。
$("p/../div") XPath 父选择器
请使用$("p").parent("div")选择器。 或者,在发布 jQuery 1.2 后,使用新的 XPath 插件。
$("div[p]") XPath 包含谓词选择器
请使用新的$("div:has(p)")选择器。 或者,在发布 jQuery 1.2 后,使用新的 XPath 插件。
$("a[@href]") XPath 属性选择器
注意:虽然该选择器在该版本中被弃用,但它不会在 jQuery 1.2 中被移除。 在 jQuery 1.2 中,建议您使用 CSS 选择器$("a[href]")代替。 或者,在发布 jQuery 1.2 后,使用新的 XPath 插件。
DOM 操作
$("div").clone(false)
使用参数调用 clone 方法被弃用(clone 方法本身将保留)。 而不是调用.clone(false)您现在应该这样做.clone().empty()代替。
DOM 遍历
$("div").eq(0)
该方法被弃用,改为使用新的 .slice() 方法(其工作方式与数组的 slice 方法相同。 您可以在以下位置复制 .eq()
$("div").slice(0,1);
此外,.eq(0) 可以通过以下方式复制
$("div:eq(0)") $("div:first")
$("div").lt(2)
该方法被弃用,改为使用新的 .slice() 方法(其工作方式与数组的 slice 方法相同。 您可以在以下位置复制 .lt()
$("div").slice(0,2);
此外,.lt(2) 可以通过以下方式复制
$("div:lt(2)")
$("div").gt(2)
该方法被弃用,改为使用新的 .slice() 方法(其工作方式与数组的 slice 方法相同。 您可以在以下位置复制 .gt()
$("div").slice(3);
此外,.gt(2) 可以通过以下方式复制
$("div:gt(2)")
Ajax
$("#elem").loadIfModified("some.php")
此便捷方法已被移除,改为使用 $.ajax() 的长格式
$.ajax({ url: "some.php", ifModified: true, success: function(html){ $("#elem").html(html); } });
$.getIfModified("some.php")
此便捷方法已被移除,改为使用 $.ajax() 的长格式
$.ajax({ url: "some.php", ifModified: true });
$.ajaxTimeout(3000)
此便捷方法已被移除,改为使用更明确的 $.ajaxSetup() 的长格式
$.ajaxSetup({timeout: 3000});
$(...).evalScripts()
jQuery 中不再需要此方法——所有包含在 HTML 字符串中的脚本在注入到文档中时都会自动执行。 不需要替代方法。
与往常一样,如果您在 jQuery 1.1.3.1 和 jQuery 1.1.4 之间遇到任何错误,请告知我们。 谢谢!
Jquery 1.4 和 IE6 似乎有问题。
很棒的工作!
它在 Safari 3 win 上运行!
我喜欢它。
谢谢!
弃用部分有一个错误
$.ajaxSettings({timeout: 3000});
应该是
$.ajaxSetup({timeout: 3000});
IE7 怎么样? JQuery 与其兼容吗?
是的,IE7 运行良好。
是什么原因导致了如此显著的性能提升呢?
太棒了!期待着即将发布的 1.2 版本!
顺便说一下,指向 jQuery 测试套件的链接失效了。
/Anders
太棒了!迫不及待想体验 jQuery 1.2 和 jQuery UI!
那 Safari 2 呢……?
我在 jQuery 1.1.4 中找不到 slide() 方法。我看到了代码,也下载了 SVN 主干分支,但还是没有找到任何 slide() 方法。
???
jQuery 1.1.4 在我所有基于 1.1.2 的当前项目中都能正常运行,而且速度更快,完美!:-D
这个是不是打错了:$(“a[href]”)?文档里说 CSS 属性选择器应该有 @ 符号。我试了一下不带 @ 符号的 $(input[type=’text’]),结果不工作。
@Martin
你说 v1.1.4 和 IE6 有问题。你能具体描述一下你遇到的问题吗?
@Shanon: 谢谢提醒,我会在文章中修正这个问题。
@Danny: 没错。a[href] 是选择带有 href 属性的锚点的正确 CSS 语法。你还会注意到,这个改变要等到 jQuery 1.2 才会实施,而且你仍然可以选择使用 @ 符号,如果你愿意的话。所以现在不用担心这个问题。
@所有人: 是的,我们也在 Safari 2 和 IE 7 中进行测试,只是为了简洁起见没有在文章中提及。
// 将 jQuery 放入命名空间
var obj = {};
obj.jq = jQuery.noConflict(true);
obj.jq(“#id div”).hide();
这看起来很有趣,但它能与插件很好地配合使用吗?com.jQ 在我的应用程序中使用的命名空间中会非常有用。我只是担心插件可能无法正常工作,除非事先分配给它。我想我很快就会知道结果了;)
我的天啊,Safari 3 是我见过的速度最快的浏览器!苹果太厉害了!
很有趣,我刚在 Firefox 2.0.0.6 上运行了测试,结果有 10 个测试失败了。
selector 模块:id (2, 5, 7)
# 在测试 #6 处崩溃:TypeError: a[i] 没有属性
# 预期 24 个断言,但只运行了 6 个
selector 模块:class (6, 10, 16)
# 使用 UTF8 的类选择器 (.å °åŒ—TaÌ ibeÌŒi) 预期: [ span#utf8class1 ] 结果: [ ]
# 使用 UTF8 的类选择器 (.å °åŒ—) 预期: [ span#utf8class1, span#utf8class2 ] 结果: [ ]
# 使用 UTF8 的类选择器 (.å °åŒ—TaÌ ibeÌŒi.å °åŒ—) 预期: [ span#utf8class1 ] 结果: [ ]
# 使用 UTF8 的类选择器 (.å °åŒ—TaÌ ibeÌŒi, .å °åŒ—) 预期: [ span#utf8class1, span#utf8class2 ] 结果: [ ]
# 使用 UTF8 的后代类选择器 (div .å °åŒ—TaÌ ibeÌŒi) 预期: [ span#utf8class1 ] 结果: [ ]
# 使用 UTF8 的子类选择器 (form > .å °åŒ—TaÌ ibeÌŒi) 预期: [ span#utf8class1 ] 结果: [ ]
selector 模块:attributes (2, 9, 11)
# 在测试 #10 处崩溃:TypeError: a[i] 没有属性
# 预期 20 个断言,但只运行了 10 个
我似乎在所有测试的浏览器中都遇到了这些错误。
… 话虽如此,我把其中一个项目迁移到了新版本,结果运行得非常完美。所以,我赞叹不已,但也有点犹豫。
选择器速度提升真棒,看到功能被压缩和弃用,很高兴。非常期待 slice()!我很好奇这个函数的性能测试结果。
不幸的是,我在 FF 2.0.0.6 上运行测试套件时得到了与 Aaron 相同的结果。
我会让你们知道升级结果!
再次感谢你们带来的速度提升。
有一些真正令人惊叹的项目,每个项目都在不断优化。
例如,HAML 解释器最近提高了其渲染引擎,并努力达到比 erb 更快的速度。
所以现在使用 $(‘div[p]’) 的人应该改用 $(‘div:has(p)’),而使用 $(‘div[@p]’) 的人则应该改用 $(‘div[p]’)?!
如果他们不改变 $(‘div[p]’) 的写法,那么它的功能就会变成旧的 @ 符号功能,而不是 has: 功能,对吗?
另外,顺便说一句,我之前在一个 Chickenfoot 脚本中使用了 jQuery,1.1.3.1 版本可以正常工作,但 1.4 版本却不行(它甚至找不到 $ 或者 jQuery)。
我运行了测试套件,结果有 10 个测试失败了。
Mozilla/5.0 (Macintosh; U; PPC Mac OS X Mach-O; en-US; rv:1.8.1.6) Gecko/20070725 Firefox/2.0.0.6
测试完成时间:53041 毫秒。
790 个测试中,有 10 个失败。
以下是详细信息:(前面有 – 的项目失败了。)
62. selector 模块:id (2, 5, 7)
1. ID 选择器 (#body)
2. 带有元素的 ID 选择器 (body#body)
3. 带有元素的 ID 选择器 (ul#first)
4. 带有现有 ID 后代的 ID 选择器 (#firstp #simon1)
5. 带有不存在 ID 后代的 ID 选择器 (#firstp #foobar)
– 6. 在测试 #6 处崩溃:TypeError: a[i] 没有属性
– 7. 预期 24 个断言,但只运行了 6 个
63. selector 模块:class (6, 10, 16)
1. 类选择器 (.blog)
2. 类选择器 (.blog.link)
3. 带有元素的类选择器 (a.blog)
4. 父类选择器 (p .blog)
– 5. 使用 UTF8 的类选择器 (.å °åŒ—TaÌ ibeÌŒi) 预期: [ span#utf8class1 ] 结果: [ ]
– 6. 使用 UTF8 的类选择器 (.å °åŒ—) 预期: [ span#utf8class1, span#utf8class2 ] 结果: [ ]
– 7. 使用 UTF8 的类选择器 (.å °åŒ—TaÌ ibeÌŒi.å °åŒ—) 预期: [ span#utf8class1 ] 结果: [ ]
– 8. 使用 UTF8 的类选择器 (.å °åŒ—TaÌ ibeÌŒi, .å °åŒ—) 预期: [ span#utf8class1, span#utf8class2 ] 结果: [ ]
– 9. 使用 UTF8 的后代类选择器 (div .å °åŒ—TaÌ ibeÌŒi) 预期: [ span#utf8class1 ] 结果: [ ]
– 10. 使用 UTF8 的子类选择器 (form > .å °åŒ—TaÌ ibeÌŒi) 预期: [ span#utf8class1 ] 结果: [ ]
11. 转义的类 (.foo\:bar)
12. 转义的类 (.test\.foo\[5\]bar)
13. 后代转义的类 (div .foo\:bar)
14. 后代转义的类 (div .test\.foo\[5\]bar)
15. 子转义的类 (form > .foo\:bar)
16. 子转义的类 (form > .test\.foo\[5\]bar)
66. selector 模块:attributes (2, 9, 11)
1. 属性存在 (a[@title])
2. 属性存在 (*[@title])
3. 属性存在([@title])
4. 属性等于 (a[@rel=’bookmark’])
5. 属性等于 (a[@rel=”bookmark”])
6. 属性等于 (a[@rel=bookmark])
7. 多个属性等于 (input[@type=’hidden’],input[@type=’radio’])
8. 多个属性等于 (input[@type=”hidden”],input[@type=’radio’])
9. 多个属性等于 (input[@type=hidden],input[@type=radio])
– 10. 测试 #10 失败: TypeError: a[i] 没有属性
– 11. 预期 20 个断言,但只运行了 10 个
$(…).evalScripts() 在使用类似于
$.ajax({
type: “POST”,
dataType: “html”,
url: “testAjax.jsp”,
data: “name=John&location=Boston”,
success: function(msg){
$(“div.changeThis”).append(msg);
}
});
我是否遗漏了什么?
@Aaron 和 Charles: 我已经修复了测试套件 - 它没有正确检出。请访问以下地址:https://jqueryjs.cn/test/
@Adam: 没有人应该从 [@foo] -> [foo] 切换,因为直到 jQuery 1.2 才会实现(因为明显的 API 不兼容)。即使在 1.2 中,[@foo] 也只会被弃用 - 它仍然可以工作(太多插件和代码库依赖于它仍然可以工作)。
此外,关于 Chickfoot 项目,可能是因为我们现在使用 window.jQuery 代替了 'var jQuery' - 嗯,我想知道我们该如何解决这个问题。
@Brett: 我检出了错误的测试套件副本,请尝试使用这个新的测试套件
https://jqueryjs.cn/test/
@AjaxDev0008: 不用 - evalScripts 现在不再需要了!还不错吧?
@John
完美通过!我喜欢这里的氛围...“当问题出现时,你必须解决它。”
@John Resig: 在 IE 6 和 7 中测试了不使用 evalScripts 的情况。在由 $.ajax 调用的文件中使用了简单的 alert。
我担心在附加 msg 时没有调用 alert。
还有其他人测试过吗?
在 Firefox 中可以正常工作。
@AjaxDev0008: 我们在测试套件中对这种情况进行了测试 - 并且它在 IE 6 中通过了。你是否有一个我可以查看的演示页面?也许我可以发现问题所在。
@Wade
我不确定它是如何实现的,因为我还没有查看代码,但我猜想,只要在调用 .noConflict 之前定义插件,它们就可以正常工作。之后,它们可能就不行了。
@John Resig: 你当然很厉害。
include('http://jqueryjs.googlecode.com/files/jquery-1.1.4.pack.js');
$ = window.jQuery;
output($);
有效。
window.jQuery(实际上)是否与 var jQuery 相互排斥?我的意思是,你这样做是为了让我们可以进行“任何名称的 jQuery”吗?
@Adam: 正确,这是“任何名称”的一部分。我不确定 ChickenFoot 的具体工作原理 - 但这可能只是使用它的一个注意事项,需要考虑。
@John Resig: 我没有演示页面,但以下是我正在使用的代码
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=windows-1252">
<title> test </title>
<script type="text/javascript" src="javascripts/jquery.js"></script>
<script type="text/javascript">
function clickMe(){
$.ajax({
type: "POST",
url: "ajaxTest.htm",
dataType: "html",
success: function(msg){
$(‘div#test’).append(msg);
}
});
}
</script>
</head>
<body>
<div>
<input type="button" value="Click Me" onclick="clickMe();"/>
</div>
<div id="test">Some Text</div>
</body>
</html>
以下是 ajaxTest.htm 的内容
<div>
Some more text
<script type="text/javascript">
alert(‘Hello’);
</script>
</div>
您好,
我在使用 $.ajax 时遇到了一些问题。我的代码在 1.1.3.1 中运行良好,但在 1.1.4.1 中不再工作。
以下是代码(所有变量都已在之前定义,并在 IE7 中的先前版本中正常工作)。
$.ajax({
url: sUrl,
data: sParams, // 检测到的参数
type: sMethod,
dataType: ‘html’,
timeout: 30000,
error: function(object,message){
$(sMessageId).html(“错误加载! “+message+””);
},
success: function(html){
$(sTarget).html(html); // 检测到的目标
$(“#message”).html(“”);
},
beforeSend: function(){
$(sMessageId).html(“”);
}
});
beforeSend 事件被触发,但 error 或 success 事件没有被触发。我是否遗漏了什么?
;)
Paul
哇!很棒的改进。
谢谢!
很高兴看到 jQuery 进行了创新更新,插件页面也每隔几天更新一次,升级到 1.2 会很棒!
非常感谢活跃的社区!还有资源,组织良好,文档和示例都很棒。
向大家致敬!
Nilesh P.
我想获得所有最新的速度提升,但自从 1.1.3 发布以来,我的图片查看器出现了奇怪的问题,我认为是 jQuery 在动画方面发生了一些变化。1.1.4 也存在同样的问题。
a) Firefox:我有一排 6 个缩略图,但当包含查看器的容器关闭时(toggle(‘slow’)),这排缩略图在第 5 个缩略图之后断开,最后一个缩略图在查看器关闭之前落到第二行。不知何故,它似乎在显示切换时增加了边距,导致这排缩略图不再适合。
b) 在 IE7 中没有出现这种情况,而是以一种缓慢、奇怪、分步的方式关闭:单击关闭,暂停,然后背景的透明度效果消失,导致背景变黑,再次暂停,然后关闭。
您有什么克服这些问题的建议吗?
谢谢。
仍然没有正则表达式选择器。难以置信。
@qui est regex:你难道不知道我们在小版本更新中不会添加新功能吗? 我们只会在主版本更新中添加新内容? 这次我们添加的方法是必要的,可以帮助用户从废弃的方法迁移过来 - 正则表达式选择器不存在这种情况。
我的天哪!
仅仅是对ID选择器的速度提升就已经令人叹为观止了。
John和团队干得真棒!
到目前为止,我的插件没有出现任何问题。 谢谢!
这可能有点偏题,但我刚看了你大约一周前关于JavaScript库的完整演示,John。 真是太棒了,我学到了很多东西,不仅是关于JavaScript,还有关于jQuery。 顺便说一句,这次更新很棒。
John,
我之前阅读了你的jQuery 1.2路线图,发现你提到如果livequery的采用率更广泛,可能会将它包含到jQuery中。 好吧,我在这里作证,它是我们正在构建的企业级网站的每个页面上的主要文件。
我开始厌倦编写初始化$.fn,livequery拯救了我。 在使用选择器将事件绑定到匹配的元素后,在许多情况下,我们通过Ajax加载新内容,这些内容需要在DOM加载后应用相同的事件。 没有livequery,我们必须将事件重新分配给Ajax加载的内容。 当然,我唯一担心的是,对于页面视图期间从未使用过的事件触发器,最终需要进行垃圾回收,但我相信有人会想出一个解决办法。
如果将livequery添加到jQuery意味着我可以节省几字节的文件包含开销和整体文件大小,我会说“做吧!”
顺便说一句。 我要对你开发的jQuery表示衷心的感谢。 它为许多可能性打开了大门,让我能够创建以前无法通过简单阅读DOM JavaScript书籍来实现的功能丰富的应用程序。
再次感谢。
太好了,谢谢!
@MikeChristensen
>>好吧,我在这里作证,它是我们正在构建的企业级网站的每个页面上的主要文件。
如果你需要一些核心库的插件,为什么不将jQuery和livequery组合成一个文件呢? 就我而言,我认为没有合并的必要。
我也似乎在IE 6.0和evalScripts中遇到问题。
我不得不写一个小的hack。
$(“#” + id + “”).html(result);
if(getBrowser == “msie”){
$(“#” + id + “”).evalScripts();
}
我已经测试了以下内容:
1) 创建一个Ajax块
function test(){
alert(1);
}
test();
尝试通过.ajax方法加载它,警报将不会在IE 6中执行。 我目前无法在IE 7中测试它,但我怀疑会有类似的行为。
我已经将一些代码移到其他位置,现在一切看起来都很好。 我不知道是什么修复了它,但这个错误不再影响我的应用程序。
怎么样? 为1.1.4发布一个新的slickspeed插件?
@frankysanders
你能发布你对代码所做的更改,以便消除.Ajax错误吗?
https://jqueryjs.cn/test/ 使我的Safari 2.0.4 (419.3) Mac崩溃了。
它成功地崩溃了三次。
我应该提一下... jQuery太棒了。
@MikeChristensen
你提到的重新绑定问题,可以通过事件委托轻松避免,jquerylive是一个很棒的插件,但你只需要将函数绑定到容器,这些容器不会随着Ajax调用而刷新,这样就可以了。
我发布了一个事件委托的小插件,叫做Intercept。 它现在很简单,也许对你有所帮助。
感谢你的辛勤付出!
很棒而且快速的库! ;-)