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以便处理跨域问题。


点击下载源码

原文链接(84 views)|评论 (5)

利用控制器载入对应脚本

因项目开发需要,须将每一个方法都独立成单独的js文件以便载入、维护,所以,必须需要有一个控制器用于载入这些方法。

我的思路是,在编写独立模块的时候,注意将这些方法集成到$.tools对象中,接下来,在页面中,调用控制器载入模块,并在载入完成后判断$.tools中对象的个数与预定义载入的模块数是否相等,如不等继续等待,如相等执行回调函数。

/*
* LOADScript Mod
* Params url1,url2,url3,url4,fn
*/
jQuery.extend({
	loadMod: function(){
		var argleng = arguments.length,
				arglast = arguments[argleng-1],
				fn = false,
				queue = [],
				checknum = 0,
				timer = null
		;
		// init
		if(jQuery.isFunction(arglast)){argleng = argleng -1;fn=arglast;}
		for (var i=0;i<argleng ;i++){
			queue.push(arguments[i]);
		}
 
		// getscript
		jQuery.each(queue,function(i,o){
			jQuery.getScript(o);
		});
 
		// check load ready?
		loadReady();
 
		function loadReady(){
			if(jQuery.tools != undefined){
				checknum = 0;
				$.each(jQuery.tools,function(i,n){
					if(jQuery.isPlainObject(n)){checknum++;}
				});
			}
			if(checknum != argleng){
					clearTimeout(timer);
					timer = setTimeout(loadReady, 100);
			}else{
					if(!!fn){fn.call(document.jQuery)}
			}
 
		}
	}
});
 
// 使用方法
$.loadMod('a.js','b.js','c.js',function(){
  alert('success!');
});

原文链接(28 views)|暂无评论(赶紧抢沙发)

CSS3 的显示与隐藏

演示地址:http://www.zhangjingwei.com/demo/css-menu.html

< !DOCTYPE html>
<head>
   <title>menu mockup</title>
   <style type="text/css">
      .show {display: none; }
      .hide:focus + .show {display: inline; }
      .hide:focus { display: none; }
      .hide:focus ~ #list { display:none; }
      @media print { .hide, .show { display: none; } }
   </style>
</head>
<body>
   <p>Here's a list</p>
      <div>
         <a href="#" class="hide">[hide]</a>
         <a href="#" class="show">[show]</a>
         <ol id="list">
            <li>item 1</li>
            <li>item 2</li>
            <li>item 3</li>
         </ol>
      </div>
   <p>How about that?</p>
</body>

原文链接(37 views)|评论 (2)

搬到新家了

在国内3年,空间一直断断续续的,加上我是联通的网络一直用的很不开心,自己想写个博客都要费尽周折。

这几天时间,完全打不开了,一怒之下,就准备换个空间。

寻觅了半天,也不曾找到一个自己心满意足的,正灰心丧气时,得好友叶宁雪中送炭,将VPS送我使用,安放一下自己的小博客。

于是趁着夜黑风高,风雨交加,好友键步如飞,用了20分钟,把我整了3天都没整下来的文件安放、配置完毕;专注成就专业,不佩服不行,再次对叶宁同志的伟大精神表示最崇高的敬意,下次哈根达斯我请!

搬到新空间,就和搬到新家一样,一切都是新的,以前用的FTP,web控制台,一点也不上等!现在使用的叫做是winSCP的软件管理(好友说叫做ssh,我就听过这个名字 :-( )只要修改目录名就可以自动解析,域名也是用CNAME解析到一个地址上,这样我就不用随着ip的变更老是去修改解析了。

总之,一切都很上等,哈哈,开心。  :-)

原文链接(34 views)|评论 (2)

jQuery Tab plugin

因为觉得网上的都太麻烦,于是自己写了一个简单的,只是做tab的切换。

演示地址:http://www.zhangjingwei.com/demo/tab/

下载地址:源代码

原文链接(69 views)|暂无评论(赶紧抢沙发)