`
codesoul
  • 浏览: 7213 次
  • 性别: Icon_minigender_1
  • 来自: 厦门
最近访客 更多访客>>
文章分类
社区版块
存档分类
最新评论

jquery漂亮的按扭控件(源代码共享)

阅读更多
开发项目时,经常需要自已开发一些UI组件,在这里共享一个刚开发的Button控件,这个Button使用很简单,只要加入相关的CSS和JS文件,这样页面中的所有input按扭都将会被自动渲染为漂亮的个性化按扭,不需要写一句代码。
源代码和示例在附件中,Button的相关JS源代码如下:

(function($){
	$.fn.btn = function(){
		var btn = this.data("_self");;
		if(btn){
			return btn;
		};
		this.init = function(){
			var obj = $(this);
			var id=$(this).attr('id')||"gen"+Math.random();
			var icon = $(this).attr('icon')||'icon-btncom';
			var bntStr=[
				'<table id="',id,'" class="z-btn" cellSpacing=0 cellPadding=0 border=0><tbody><tr>',
					'<TD class=z-btn-left><i>&nbsp;</i></TD>',
					'<TD class=z-btn-center><EM unselectable="on">',
						'<BUTTON class="z-btn-text ',icon,'" >',$(this).attr('value'),'</BUTTON>',
					'</EM></TD>',
					'<TD class=z-btn-right><i>&nbsp;</i></TD>',
				'</tr></tbody></table>'
			];
			var bnt = $(bntStr.join('')).btn();
			bnt._click = eval(obj.attr("onclick"));
			bnt.disable();
			if(obj.attr("disabled"))
				bnt.disable();
			else bnt.enable();
			$(this).replaceWith(bnt);
			bnt.data("_self", bnt);  
			return bnt;
		};
		this.enable = function(){
			this.removeClass("z-btn-dsb");
			this.click(this._click);
			this.hover(
				  function () {
				    $(this).addClass("z-btn-over");
				  },
				  function () {
				    $(this).removeClass("z-btn-over");
				  }
				)
		};
		this.disable = function(){
			 this.addClass("z-btn-dsb");
			 this.unbind("hover");
			 this.unbind("click");
		};  
		return this;
	};
	
	$(function(){
		$("input[type='button']").each(function(){
			$(this).btn().init();
		});
		$("input[type='reset']").each(function(){
			$(this).btn().init().click(function(){
				var form = $(this).parents("form")[0];
				if(form)
					form.reset();
			});
		});
		$("input[type='submit']").each(function(){
			$(this).btn().init().click(function(){
				var form = $(this).parents("form")[0];
				if(form)
					form.submit();
			});
		});
	})
})(jQuery);



[img][/img]

  • 大小: 107.2 KB
分享到:
评论
79 楼 解未知数 2010-02-23  
效果不错 ..
78 楼 seth34 2010-01-29  
并将icon.css修改为如下
.icon-cls {
    background: url(icons/class.gif) no-repeat 0 1px !important;
}
.icon-event {
    background: url(icons/event.gif) no-repeat 0 1px !important;
}
.icon-config {
    background: url(icons/config.gif) no-repeat 0 1px !important;
}
.icon-prop {
    background: url(icons/prop.gif) no-repeat 0 1px !important;
}
.icon-method {
    background: url(icons/method.gif) no-repeat 0 1px !important;
}
.icon-cmp {
    background: url(icons/cmp.gif) no-repeat 0 1px !important;
}
.icon-pkg {
    background: url(icons/pkg.gif) no-repeat 0 1px !important;
}
.icon-fav {
    background: url(icons/fav.gif) no-repeat 0 1px !important;
}
.icon-static {
    background: url(icons/static.gif) no-repeat 0 1px !important;
}
.icon-docs {
    background: url(icons/docs.gif) no-repeat 0 1px !important;
}
.icon-expand-all {
    background: url(icons/expand-all.gif) no-repeat 0 1px !important;
}
.icon-collapse-all {
    background: url(icons/collapse-all.gif) no-repeat 0 1px !important;
}
.icon-expand-members {
    background: url(icons/expand-members.gif) no-repeat 0 1px !important;
}
.icon-hide-inherited {
    background: url(icons/hide-inherited.gif) no-repeat 0 1px !important;
}
.icon-org {
    background: url(icons/org.gif) no-repeat 0 1px !important;
}
.icon-save {
    background: url(icons/save.gif) no-repeat 0 1px !important;
}
.icon-save-back {
    background: url(icons/save-back.png) no-repeat 0 1px !important;
}
.icon-add {
    background: url(icons/add.gif) no-repeat 0 1px !important;
}
.icon-delete {
    background: url(icons/delete.gif) no-repeat 0 1px !important;
}
.icon-add-row {
    background: url(icons/add-row.gif) no-repeat 0 1px !important;
}
.icon-delete-row {
    background: url(icons/delete-row.gif) no-repeat 0 1px !important;
}
.icon-back {
    background: url(icons/back.png) no-repeat 0 1px !important;
}
.icon-search {
    background: url(icons/search.png) no-repeat 0 1px !important;
}
.icon-search-row {
    background: url(icons/search-row.png) no-repeat 0 1px !important;
}
.icon-reload {
    background: url(icons/reload.png) no-repeat 0 1px !important;
}
.icon-reset {
    background: url(icons/reload.png) no-repeat 0 1px !important;
}
.icon-print {
    background: url(icons/print.gif) no-repeat 0 1px !important;
}
.icon-export {
    background: url(icons/print.gif) no-repeat 0 1px !important;
}
.icon-help {
    background: url(icons/help.png) no-repeat 0 1px !important;
}
.icon-check {
    background: url(icons/check.png) no-repeat 0 1px !important;
}
.icon-copy {
    background: url(icons/copy.png) no-repeat 0 1px !important;
}
.icon-example {
    background: url(icons/example.gif) no-repeat 0 1px !important;
}
.icon-retry {
    background: url(icons/retry.png) no-repeat 0 1px !important;
}
.icon-send-now {
    background: url(icons/send-now.gif) no-repeat 0 1px !important;
}
.icon-receive-now {
    background: url(icons/send-receive.gif) no-repeat 0 1px !important;
}
.icon-edit {
    background: url(icons/edit.png) no-repeat 0 1px !important;
}
.icon-checked {
    background: url(icons/checked.gif) no-repeat 0 1px !important;
}
.icon-unchecked {
    background: url(icons/unchecked.gif) no-repeat 0 1px !important;
}
.icon-pick-button {
    background: url(icons/pick-button.gif) no-repeat 0 1px !important;
}
.icon-cancel {
    background: url(icons/cancel.png) no-repeat 0 1px !important;
}
.icon-apply {
    background: url(icons/apply.png) no-repeat 0 1px !important;
}
.icon-offset {
    background: url(icons/offset.png) no-repeat 0 1px !important;
}
.icon-success {
    background: url(icons/success.gif) no-repeat 0 1px !important;
}
.icon-forum {
    background: url(icons/forum.gif) no-repeat 0 1px !important;
}
.icon-pdf {
    background: url(icons/pdf.gif) no-repeat 0 1px !important;
}
.icon-excel {
    background: url(icons/excel.gif) no-repeat 0 1px !important;
}
.icon-word {
    background: url(icons/word.gif) no-repeat 0 1px !important;
}
.icon-preprint {
    background: url(icons/pre_print.gif) no-repeat 0 1px !important;
}
.icon-btncom {
background: url(icons/prop.gif) no-repeat 0 1px !important;
}
77 楼 seth34 2010-01-29  
搞定了上面的问题

在button.css中
将.z-btn这行修改为如下:
.z-btn{display:inline;vertical-align:middle;font:normal 11px tahoma,verdana,helvetica;cursor:pointer;white-space:nowrap;width: auto;}

就可以解决IE78下面偏高的问题
76 楼 seth34 2010-01-29  
Button按钮比正常要高一点,请问各位怎么解决呀
75 楼 mgh2008 2010-01-25  
jquery不熟悉,刚好可以拿这个学习一下,谢谢
74 楼 bearchen 2010-01-08  
近期项目正需要这方面的东西,感谢楼主的分享,回去研究一下哈
73 楼 bluethink 2009-12-25  
效果很棒啊,谢谢楼主提供
72 楼 wfun 2009-12-21  
原先的submit都点击后,无视其他规则提交,我该了一下代码,大家看看是不是合适。

/*
* Title:
* Description:
* Aucthor: 曾宪斌
* Aucthor:wangwch
* Email: zengxianbin@gmail.com
* Create Date:2009-06-18
* Copyright 2009
*/
(function($){
$.fn.btn = function(){
var btn = this.data("_self");;
if(btn){
return btn;
};
this.init = function(){
var obj = $(this);
var id=$(this).attr('id')||"gen"+Math.random();
var icon = $(this).attr('icon')||'icon-btncom';
// var width = $(this).width();
// alert(this.width()*0.8)
var bntStr=[
'<table id="',id,'" class="z-btn" cellSpacing=0 cellPadding=0 border=0><tbody><tr>',
'<TD class=z-btn-left><i>&nbsp;</i></TD>',
'<TD class=z-btn-center><EM unselectable="on">',
'<INPUT type="',$(this).attr('type'),'"  id="',$(this).attr('id'),'"  name="',$(this).attr('name'),'" class="z-button z-btn-text ',icon,'"  value="',$(this).attr('value'),'"></INPUT>',
'</EM></TD>',
'<TD class=z-btn-right><i>&nbsp;</i></TD>',
'</tr></tbody></table>'
];
var bnt = $(bntStr.join('')).btn();
bnt._click = eval(obj.attr("onclick"));
bnt.disable();
if(obj.attr("disabled"))
bnt.disable();
else bnt.enable();
$(this).replaceWith(bnt);
bnt.data("_self", bnt); 
return bnt;
};
this.enable = function(){
this.removeClass("z-btn-dsb");
this.click(this._click);
this.hover(
  function () {
    $(this).addClass("z-btn-over");
  },
  function () {
    $(this).removeClass("z-btn-over");
  }
)
};
this.disable = function(){
this.addClass("z-btn-dsb");
this.unbind("hover");
this.unbind("click");
}; 
return this;
};

$(function(){
$("input[type='button']").each(function(){
$(this).btn().init();

});
$("input[type='reset']").each(function(){
$(this).btn().init();
});
$("input[type='submit']").each(function(){
$(this).btn().init();
});
})
})(jQuery);
71 楼 wfun 2009-12-21  
/*
* Title:
* Description:
* Aucthor: 曾宪斌
* Email: zengxianbin@gmail.com
* Create Date:2009-06-18
* Copyright 2009
*/
(function($){
$.fn.btn = function(){
var btn = this.data("_self");;
if(btn){
return btn;
};
this.init = function(){
var obj = $(this);
var id=$(this).attr('id')||"gen"+Math.random();
var icon = $(this).attr('icon')||'icon-btncom';
// var width = $(this).width();
// alert(this.width()*0.8)
var bntStr=[
'<table id="',id,'" class="z-btn" cellSpacing=0 cellPadding=0 border=0><tbody><tr>',
'<TD class=z-btn-left><i>&nbsp;</i></TD>',
'<TD class=z-btn-center><EM unselectable="on">',
'<INPUT type="',$(this).attr('type'),'"  id="',$(this).attr('id'),'"  name="',$(this).attr('name'),'" class="z-button z-btn-text ',icon,'"  value="',$(this).attr('value'),'"></INPUT>',
'</EM></TD>',
'<TD class=z-btn-right><i>&nbsp;</i></TD>',
'</tr></tbody></table>'
];
var bnt = $(bntStr.join('')).btn();
bnt._click = eval(obj.attr("onclick"));
bnt.disable();
if(obj.attr("disabled"))
bnt.disable();
else bnt.enable();
$(this).replaceWith(bnt);
bnt.data("_self", bnt); 
return bnt;
};
this.enable = function(){
this.removeClass("z-btn-dsb");
this.click(this._click);
this.hover(
  function () {
    $(this).addClass("z-btn-over");
  },
  function () {
    $(this).removeClass("z-btn-over");
  }
)
};
this.disable = function(){
this.addClass("z-btn-dsb");
this.unbind("hover");
this.unbind("click");
}; 
return this;
};

$(function(){
$("input[type='button']").each(function(){
$(this).btn().init();

});
$("input[type='reset']").each(function(){
$(this).btn().init();
});
$("input[type='submit']").each(function(){
$(this).btn().init();
});
})
})(jQuery);
70 楼 ado88 2009-12-18  
发现在我的浏览器下面看,鼠标移动上去的时候,按钮的背景变小了,需要修改如下代码就可以正常显示,不知道其他人怎么说。

button.css:
.z-btn-over .z-btn-right{background:url(images/button/btnover_bg_right.gif) no-repeat -9px 0;}

把-9px改成 -7px;

不好意思,发了两条,不知道怎么删除,
69 楼 ado88 2009-12-18  
发现在我的浏览器下面看,鼠标移动上去的时候,按钮的背景变小了,需要修改如下代码就可以正常显示,不知道其他人怎么说。

button.css:
.z-btn-over .z-btn-right{background:url(images/button/btnover_bg_right.gif) no-repeat -9px 0;}

把-9px改成 -7px;
68 楼 ywencn 2009-12-12  
直接上CSS就行了啊。。哪样搞这么复杂
67 楼 yupengfeiwangcui 2009-11-22  
赞,谢谢楼主分享
66 楼 WalterRutter 2009-11-07  
感觉很好,谢谢楼主
65 楼 爱的挽歌 2009-10-28  
我从来没上过这么好的网站,谢谢各位大虾分享!
64 楼 wxw404 2009-10-20  
收藏了,回去好好看看,估计项目中用的上
63 楼 filamoon 2009-10-19  
谢谢楼主分享。

有这么两个问题:

1:我需要加这个 hack 才能让 ie7 正常显示,否则图标显示不出来。不知道是不是和我的其他 css 有冲突。
*+html .z-btn .z-btn-center .z-btn-text{width:100%}

另外,background-position-y:1px 的设置会似的图片在 ie7,8 下位置偏上,但是 ie6 正常。3px 在 ie7,8 下更好。

2:这个问题好像更严重一点。用了按钮控件后,jquery.validate 插件就不起作用了。是不是 DOM 元素被删除导致 validate 事件无法绑定?
62 楼 javaAlpha 2009-10-13  
挺好的 O(∩_∩)O谢谢分享 研究一下
61 楼 kaloosh 2009-09-27  
用起来方便,看起来也挺漂亮的,值得一用
60 楼 hukai9200 2009-09-25  
谢谢提供 真不赖

相关推荐

    ASP.NET源代码共享

    在这个名为"ASP.NET源代码共享"的主题中,我们可以推测这是一个关于分享ASP.NET相关项目源代码的资源。尽管描述部分为空,但从标签"源码"和"工具"可以推断,这个压缩包可能包含了一个或多个实用的ASP.NET工具或示例...

    Jquery日历控件源码

    "Lee10DateTime-K1.0"这款控件具有无加密源码的特点,意味着开发者可以自由查看和修改源代码,以便更好地理解和定制功能。 该控件的核心功能包括: 1. **显示日历**:控件会根据指定的HTML元素生成一个日历界面,...

    Highcharts jQuery 图表控件

    在描述中提到的C#源代码,可能是基于Highcharts的.NET封装,方便.NET开发者更便捷地集成和使用Highcharts。 在实际应用中,Highcharts主要通过JavaScript API进行配置和操作。开发者可以通过设置各种选项来定制图表...

    一个漂亮的fileupload控件

    在这里,描述提到这个控件是网上找到的源代码,意味着它可能是一个开源或者共享的项目,开发者可以自由下载、使用甚至修改来适应自己的项目需求。 首先,我们来探讨一下FileUpload控件的基本功能。在传统的HTML中,...

    JAVA上百实例源码以及开源项目源代码

    日历表格面板 [ConfigLine.java] 控制条类 [RoundBox.java] 限定选择控件 [MonthMaker.java] 月份表算法类 [Pallet.java] 调色板,统一配色类 Java扫雷源码 Java生成自定义控件源代码 2个目标文件 Java实现HTTP连接...

    ASP.NET 开发局域网文件共享及检索系统的设计与开发(源代码+论文)

    在“ASP.NET 开发局域网文件共享及检索系统的设计与开发(源代码+论文)”这个项目中,我们可以看到开发者利用ASP.NET技术构建了一个针对局域网环境的文件共享和检索系统。下面将详细解释此系统的开发要点和涉及的关键...

    web打印控件代码

    在提供的文件"2006379481763"中,可能包含了实现上述功能的源代码、示例或者相关文档。通过研究这些文件,开发者可以学习如何在自己的项目中实现类似的Web打印功能。 总的来说,Web打印控件在电子商务、在线报表、...

    ASP基于WEB新闻发布系统(源代码+论文).rar

    源代码的提供对于初学者和开发者来说,是一个极好的学习资源,可以深入理解ASP.NET的编程模型和Web应用的开发流程。 该项目主要涉及以下几个核心知识点: 1. **ASP.NET Web Forms**:作为ASP.NET的基础,Web Forms...

    源代码-天气预报插件源码 v1.0.zip

    这意味着天气预报插件的源代码可能是用ASP语言编写的,这将涉及到ASP的基础语法、服务器控件、请求响应处理等相关知识。 【文件名称列表解析】 由于提供的文件名称列表只有一个数字串"132687961360656692",这通常...

    ASP.net的Ajax控件代码演示

    - 对于跨域请求或安全考虑,需要理解并配置CORS(跨源资源共享)策略。 - 确保在不支持JavaScript的环境中,应用也能正常工作,提供良好的降级策略。 通过"AJAXEnabledWebSite1"项目的实践和学习,你将能掌握ASP...

    日历控件(浏览器兼容)

    同源策略是浏览器安全机制的一部分,阻止了不同源的页面之间共享数据,例如,当一个iframe尝试访问其父窗口的数据时,如果它们的源不相同,就会遇到限制。在IIS服务器上测试可能是为了模拟一个更严格的环境,确保...

    日历控件(签到、日程表)

    在压缩包的“1.1”文件中,可能包含了该日历控件的源代码、资源文件、文档说明或者示例项目。这些资源可以帮助开发者更深入地理解控件的工作原理,对其进行定制或整合到自己的项目中。源代码的结构和注释将有助于...

    省市区三级联动C#源代码(含全国各地市数据库)无刷新非ASMX服务

    标题中的“省市区三级联动C#源代码(含全国各地市数据库)无刷新非ASMX服务”指的是一个基于C#编程语言实现的Web应用程序,用于在网页上实现省、市、区三级联动的选择功能,且无需页面刷新。这个系统通常用在用户填写...

    ASP基于WEB的办公自动化管理系统(源代码+设计说明书).zip

    这个“ASP基于WEB的办公自动化管理系统”源代码和设计说明书的压缩包提供了一个实际应用实例,帮助我们了解如何利用ASP技术来实现企业或组织内部的办公自动化。 办公自动化管理系统(Office Automation System, OAS...

    asp.net日历控件

    一旦日历控件在工具箱中可用,我们就可以在设计视图中拖放到网页上,或者在源代码视图中通过以下方式手动添加: ```html &lt;asp:Calendar ID="Calendar1" runat="server"&gt;&lt;/asp:Calendar&gt; ``` 日历控件提供了一些...

    js日历控件

    8. **数据源集成**:与后台数据库或其他数据源(如Google日历、Outlook等)的集成,可以实现日程的同步和共享。 9. **性能优化**:优秀的日历控件会考虑性能优化,如延迟加载、缓存策略等,以减少页面加载时间和...

    .net文件上传控件

    7. **跨域上传**:如果需要在多个域之间进行文件上传,需要处理CORS(跨源资源共享)设置,确保服务器允许从其他域名发送上传请求。 总之,.NET文件上传控件是一个复杂但重要的功能,涉及到前端交互、后端处理、...

    jquery表格插件jqgrid

    3. **初始化jqGrid**:通过JavaScript调用`$("#tableId").jqGrid()`方法初始化表格,配置相关的参数,如列信息、数据源、操作按钮等。 4. **加载数据**:根据数据源类型,设置相应的URL或数据,jqGrid会自动处理...

Global site tag (gtag.js) - Google Analytics