【上海】急募前端攻城师一名

帮朋友公司招的,偏开发,公司前景和发展状况都不错。
一些要求:
1、不拘泥于学历经验男女老少,但一定要专注专业;
2、熟练掌握并运用前端各项必备技能,诸如xhtml、css、js等;
3、如果你对上面的要求不知所云,也不清楚前端攻城师的职责,那说明你不适合这个职位,请绕行。

联系及薪资
薪资:实力决定报酬,5000起,上不封顶,外加资金福利。
欢迎投送简历:cnbluebird#gmail.com 或 306779974#qq.com

智讯互动高薪招募IOS开发人员和PHP开发人员

我们诚挚的邀请优秀的人才加盟,并为他们创造尽量宽松、愉快的工作环境;
我们推崇专注而高效的工作,轻松开放的沟通,用创造性的想法解决问题;
我们提供让你在这个城市里能够体面生活的薪水。
在智讯互动,有艺术生、文科生、理科生、退学生,还有猫。有人热衷相声表演,有人钻研佛教文化;也有人喜欢泡淘宝和豆瓣。我们鼓励背景各异的人在此互相分享,激荡创造力。
西安,智讯互动,热切求贤。
以下职位不问出处,只看实力。我们提供远高于西安同行业水准的工资。只要有实力,薪水由你定。录用者享受五险一金+年终奖+多种人性化福利。
简历投送:info#zhixunhudong.com 或 cnbluebird#gmail.com
IOS开发工程师1-2人
1、iOS方向应用项目开发;
2、一年以上相关工作经验;
3、熟悉Objective-C,熟悉Cocoa开发,熟练掌握XCode、Interface Builder等工具;能熟练进行网络和UI方面的设计开发;
4、具备TCP/IP网络通信开发经验者或熟悉C/C++项目经验者佳;熟悉xml解析,了解并有Webservice使用、开发经验;
5、有网上支付项目经验、有openGL开发经验者优先;
6、高效、专注、诚实、负责,能承受高强度工作。

PHP开发工程师1-2人
1、只招猛人,菜鸟绕行!
2、高效、专注、诚实、负责,能承受高强度工作;
3、精通PHP+MySQL,熟悉WAMP开发流程,能写优质的代码;
4、一年以上商用网站开发经验,熟悉XHTML/CSS/JAVASCRIPT/AJAX及HTML5&CSS3技术者优先。

点击加减或手动改变表单值(支持键盘控制)的jQuery插件

大多电子商务网站购物车页面,都有通过点击来增减商品数量的功能,特地根据常规功能写了一个jQuery插件。
购物车常用功能
实现的功能:
1、可通过点击增加或减小定义的input值;
2、可手动输入input值,且支持键盘控制:上右为加,下左为减;
3、可设定表单的最大最小值,并对input值进行了非负整数判断;
4、定义了一个全局对象,存储表单最后的input值和所改变input的索引值。若不希望全局对象污染整个js,可在插件中稍稍修改一下,把想返回的值传到一个hidden input中;
5、定义了一个回调函数,方便扩展。比如,在点击或输入数值后重新计算价格数量等。
点此查看样列
jQuery代码:

$.fn.iVaryVal=function(iSet){
	/*
	 * Minus:点击元素--减小
	 * Add:点击元素--增加
	 * Input:表单元素
	 * Min:表单的最小值,非负整数
	 * Max:表单的最大值,正整数
	 * Fun:回调函数
	 */
	iSet=$.extend({Minus:$('.J_minus'),Add:$('.J_add'),Input:$('.J_input'),Min:0,Max:20,Fun:null},iSet);
	var C=null,O=null;
	//输出值全局对象[若担心全局对象污染,可定义一个hidden表单,向其传值]
	$GLOBAL={};
	//增加
	iSet.Add.each(function(i){
		$(this).click(function(){
			O=parseInt(iSet.Input.eq(i).val());
			(O+1<=iSet.Max) || (iSet.Max==null) ? iSet.Input.eq(i).val(O+1) : iSet.Input.eq(i).val(iSet.Max);
			//输出当前改变后的值
			$GLOBAL.val=iSet.Input.eq(i).val();
			$GLOBAL.index=i;
			//回调函数
			if (typeof iSet.Fun == 'function') {
				iSet.Fun.call(this);
		  	}
		});
	});
	//减少
	iSet.Minus.each(function(i){
		$(this).click(function(){
			O=parseInt(iSet.Input.eq(i).val());
			O-1<iSet.Min ? iSet.Input.eq(i).val(iSet.Min) : iSet.Input.eq(i).val(O-1);
			$GLOBAL.val=iSet.Input.eq(i).val();
			$GLOBAL.index=i;
			//回调函数
			if (typeof iSet.Fun == 'function') {
				iSet.Fun.call(this);
		  	}
		});
	});
	//手动
	iSet.Input.bind({
		'click':function(){
			O=parseInt($(this).val());
			$(this).select();
		},
		'keyup':function(){
			if($(this).val()!=''){
				C=parseInt($(this).val());
				//非负整数判断
				if(/^[1-9]\d*|0$/.test(C)){
					$(this).val(C);
					O=C;
				}else{
					$(this).val(O);
				}
			}
			//键盘控制:上右--加,下左--减
			if(e.keyCode==38 || e.keyCode==39){
				iSet.Add.eq(iSet.Input.index(this)).click();
			}
			if(e.keyCode==37 || e.keyCode==40){
				iSet.Minus.eq(iSet.Input.index(this)).click();
			}
			//输出当前改变后的值
			$GLOBAL.val=$(this).val();
			$GLOBAL.index=iSet.Input.index(this);
			//回调函数
			if (typeof iSet.Fun == 'function') {
				iSet.Fun.call(this);
		  	}
		},
		'blur':function(){
			$(this).trigger('keyup');
			if($(this).val()==''){
				$(this).val(O);
			}
			//判断输入值是否超出最大最小值
			if(iSet.Max){
				if(O>iSet.Max){
					$(this).val(iSet.Max);
				}
			}
			if(O<iSet.Min){
				$(this).val(iSet.Min);
			}
			//输出当前改变后的值
			$GLOBAL.val=$(this).val();
			$GLOBAL.index=iSet.Input.index(this);
			//回调函数
			if (typeof iSet.Fun == 'function') {
				iSet.Fun.call(this);
		  	}
		}
	});
}

若有bug,请以评论形式及时反馈~

多屏自动切换jQuery效果,可手动切换

油翁酌油沥钱,自钱孔入而钱不湿。因曰:“我亦无他, 唯手熟尔”。
好久没有好好的写过代码了,博客也有好几个月没有更新。忙于工作,忙于人身大事,忙于琐碎。最近相对清闲,正好一个做后端的朋友求助于我,帮他写一个新蛋网首页多屏自动切换效果。顺便分享之。
多屏自动切换jQuery效果
思路很简单,详见代码。本来是想封装成插件的,但一想,这种效果,也不大可能同时用多个,就偷懒直接写了。相关自定义的变量都放在一起了,一些功能函数也都有注释。自测兼容性良好,若有BUG请反馈。
点此查看样列
jQuery代码:

	var imgField=$('#J_imgList');
	var imgList=$('#J_imgList>li');
	var navField=$('#J_navList');
	var navList=$('#J_navList>li');
	var btnPrev=$('#J_prev');
	var btnNext=$('#J_next');
	var turnPage=4;//每屏显示数
	var T=5000;//切换间隔时间
	var turnT=300;//animate时间
	var N=0;//图片初始索引
	var P=1;//屏初始索引

	var goFun=null;
	var hoverFun=null;
	var triggerFun=null;
	var delayFun=null
	var navListW=navList.outerWidth(true);
	var turnPages=Math.ceil(navList.size()/turnPage);
	//初始图片区域高度与标题区域宽度
	imgField.height(imgList.size()*imgList.height());
	navField.width(navList.size()*navListW);
	//初始自动切换
	GO();
	//自动切换
	function GO() {
		imgField.stop().animate({
			marginTop:-N*(imgList.height())
		},turnT);
		navList.eq(N).addClass('hover').siblings().removeClass('hover');
		if(N%turnPage==0) {
			navField.stop().animate({
				marginLeft:-N*navListW+'px'
			},turnT);
		}
		N++;
		N= N>=imgList.size()?0:N;
		P=Math.ceil(N/turnPage);
		goFun=setTimeout(GO,T);
	}

	//停止切换
	function STOP() {
		clearTimeout(goFun);
	}

	//标题划过移出
	navList.hover( function() {
		clearTimeout(delayFun);
		STOP();
		N=navList.index(this);
		imgField.stop().animate({
			marginTop:-N*(imgList.height())
		},turnT);
		$(this).addClass('hover').siblings().removeClass('hover');
	}, function() {
		N++;
		delayFun=setTimeout(GO,T)
	});
	//图片划过移出
	imgList.hover( function() {
		N=imgList.index(this);
		navList.eq(N).trigger('mouseover');
	}, function() {
		navList.eq(N).trigger('mouseleave');
	});
	//左切换
	btnPrev.click( function() {
		if(P==1) {
			navField.animate({
				marginLeft:-turnPage*navListW*(turnPages-1)+'px'
			},turnT);
			P=turnPages;
		} else {
			STOP();
			P--;
			navField.animate({
				marginLeft:-turnPage*navListW*(P-1)+'px'
			},turnT);
		}
		navList.eq((P-1)*turnPage).trigger('mouseover');
		GO();
	});
	//右切换
	btnNext.click( function() {
		if(P==turnPages) {
			navField.animate({
				marginLeft:0
			},turnT);
			P=1;
		} else {
			STOP();
			P++;
			navField.animate({
				marginLeft:-turnPage*navListW*P+'px'
			});
		}
		navList.eq((P-1)*turnPage).trigger('mouseover');
		GO();
	});

离上次写博客整整两月了。
工作,忙,累,懒散,分裂。理由,也是借口。

我还活着。从明天起,要做一个勤劳的人。抽时间学习,抽时间分享文章。
HTML5,架构,用研,JS。碎碎的。

不进,即退。