张经纬的博客 -

jQuery Autocomplete plugin

写的比较满意,拿出来分享,欢迎大家找BUG。

相对于同类插件,他的特色有3点。
1、可缓存查询结果 (二次查询速度快)
2、非keyup监听方式 (解决某些系统/情况下无法触发keyxxx事件的问题)
3、简洁的参数 (好看?)

插件性能尚好,我的E6500、2G内存,30秒内一共发生了4469次调用,耗时94.65毫秒;百度的是2432次调用,80.24毫秒。

接近1倍的调用是jQuery中的问题,但具体原因我还没弄明白,如果那位兄弟知道的还请不吝赐教。

调用方法

jQuery("#kw").suggest({
	url:siteConfig.suggestionUrl,
	params:{
		kw:function(){return jQuery("#kw").val()},
		n:10
	}
});

参数url:baseUrl,例如http://www.target.com/search.php
参数params:url的后缀列表,范例中拼合的url为:http://www.target.com/search.php?kw=xxx&n=10&callback=?(默认加入callback)
参数delay:输入间隔时间,主要是为了降低负载,数值越大,负载越低,查询速度越慢。
参数cache:是否实用缓存,默认为true,例如当搜索“test”时,程序会将对应的查询结果缓存,当第二次搜索test时直接从缓存中读取。
参数formId:必须填写,form表单的id
参数callback:是否使用jsonp以便处理跨域问题。


点击下载源码

原文链接|

目前 共有 7 条评论 ,点此发表评论

  1. 行者

    七月 21st, 2010 @ 09:53

    这个怎么调用啊。没看明白。

    回复

  2. 飞飞

    八月 3rd, 2010 @ 16:08

    奇怪,博主不用firefox吗?建议在firefox打开下贵博客,会吓到您的,嘿嘿!

    回复

    张经纬 reply on 八月 6th, 2010 00:23:

    @飞飞, 没看到什么吓到我的啊?

    回复

  3. Gorden

    八月 20th, 2010 @ 16:09

    firefox ajax 请求其他域的,返回的data一直是null , 不知道怎么回事,IE下一直正常

    回复

    张经纬 reply on 八月 28th, 2010 17:27:

    是否采用JSONP呢?也许是跨域的问题

    回复

  4. Michelle Dennis

    十二月 24th, 2010 @ 11:39

    firefox ajax 请求其他域的,返回的data一直是null , 不知道怎么回事,IE下一直正常

    回复

    张经纬 reply on 十二月 25th, 2010 19:15:

    请求其其它域的时候用jsonp的方式,要不存在跨域的问题。

    另外,你可以用1.2的

    回复