checkbox全选、table的相关jquey插件设计
来源:互联网 发布:电脑淘宝网官方下载 编辑:程序博客网 时间:2024/06/05 07:31
先说想做的效果和思路
1.效果。
第一,全选按钮,选择后,所有checkbox的行全选。取消时候,所有checkbox全部取消。其实就是全选和全不选。
第二,隔行变色,
第三,鼠标滑动变色。
2.思路。
第一,其实全选和全不选,都是一个思路,click按钮,遍历所有的checkbox,将checked的值改为false或者ture,有的时候是checked
第二,隔行变色,用的是jquery中的tr:even,这个可是一个神奇啊。不解释。
第三,滑动变色,加深效果。bind的事件为mouseover和mouseout,用过这两个事件来改变效果。
之前我说过开发jquery插件的框架。
命名,起一个牛逼的名字。jquery.tableSelectPlugin.js,注意,jquery的插件就是要这样命名的。jquery.pluginname.js的形式。
html,这个是为table设计的,我们随便写一个table
<table><tr><th><label><input id="allSel" type="checkbox" name="all"/>全选</label></th><th>名称</th><th>详情页</th><th>编辑宝贝</th><th>状态</th><th>预览</th><th>创建时间</th></tr><tr><td><input type="checkbox" value="" class="item"/></td><td>张三</td><td>http://www.csdn.net</td><td>编辑链接</td><td>已编辑</td><td>预览链接</td><td>1986-1-4</td></tr><tr><td><input type="checkbox" value="" class="item" /></td><td>张三</td><td>http://www.csdn.net</td><td>编辑链接</td><td>已编辑</td><td>预览链接</td><td>1986-1-4</td></tr><tr><td><input type="checkbox" value="" class="item" /></td><td>张三</td><td>http://www.csdn.net</td><td>编辑链接</td><td>已编辑</td><td>预览链接</td><td>1986-1-4</td></tr><tr><td><input type="checkbox" value="" class="item"/></td><td>张三</td><td>http://www.csdn.net</td><td>编辑链接</td><td>已编辑</td><td>预览链接</td><td>1986-1-4</td></tr><tr><td><input type="checkbox" value="" class="item"/></td><td>张三</td><td>http://www.csdn.net</td><td>编辑链接</td><td>已编辑</td><td>预览链接</td><td>1986-1-4</td></tr></table>
你要控制每一个tr,那么他必须有相同的元素,ok其实就是class=item
这是我们遍历的条件。
为了好看点,我加一段简单的css
<style>table { font-size:12px; border:1px solid #dedede; margin:0 auto; }table tr td { border: 1px solid #B1CDE3; font-size:12px; padding: 3px 3px 3px 8px; color: #4f6b72; }table tr .title { text-align:left; }</style>
ok,现在我们来搭建jquery的框架
之前我已经讲过了。
直接贴框架的代码
(function($){jQuery.fn.tableSelectPlugin = function(options){var defaults = {id_all: "selAll",cls_item: "item",}var options = $.extend(defaults,options);return this.each(function(){//code....逻辑过程})}})(jQuery);
defaults是默认的。我们观察我们需要控制的ducoment。id_all就是那个全选框的id,cls_item就是相同的tr的class
下面我们来写逻辑过程。
(function($){jQuery.fn.tableSelectPlugin = function(options){var defaults = {id_all: "selAll",cls_item: "item",}var options = $.extend(defaults,options);return this.each(function(){var o = options;var table = $(this);var a = "#" + o.id_all;table.find(a).click(function(){var mk = $(a).attr('checked');if( mk == true ){$('input.'+o.cls_item).each(function(index){var temp = $(this).attr('checked');if(temp == false){$(this).attr('checked',true);}});}else{$('input.'+o.cls_item).each(function(index){var temp = $(this).attr('checked');if(temp == true){$(this).attr('checked',false);}});}});})}})(jQuery);
注意,$(this)的改变。。
全选的问题搞定了。if是全选,else就是全部选了。
从相同的item我们可以发现,增加一个友好的操作。当checkbox有选中的时候,将全选框改为勾中状态。
//增加一些和全选有关的友好操作。$('input.'+o.cls_item).click(function(){var x = $(this).attr('checked');if(x == true){$(a).attr('checked',true);}});
接下来是鼠标移动加深tr变色。
//mouseover变色table.find("tr").bind("mouseover",function(){$(this).css("background-color","#dedede");})table.find("tr").bind("mouseout",function(){$(this).css("background-color","#fff");})
接下来是隔行变色
//隔行变色table.find("tr:even").css("background-color","#999");
最后我建议啊,不要直接操作css,最好通过addclass这样来处理隔行变色。
基本上算是结束了,照例我会贴出所有的代码,可以自行改动。
js代码
(function($){jQuery.fn.tableSelectPlugin = function(options){var defaults = {id_all: "selAll",cls_item: "item",}var options = $.extend(defaults,options);return this.each(function(){var o = options;var table = $(this);var a = "#" + o.id_all;table.find(a).click(function(){var mk = $(a).attr('checked');if( mk == true ){$('input.'+o.cls_item).each(function(index){var temp = $(this).attr('checked');if(temp == false){$(this).attr('checked',true);}});}else{$('input.'+o.cls_item).each(function(index){var temp = $(this).attr('checked');if(temp == true){$(this).attr('checked',false);}});}});//增加一些和全选有关的友好操作。$('input.'+o.cls_item).click(function(){var x = $(this).attr('checked');if(x == true){$(a).attr('checked',true);}});//mouseover变色table.find("tr").bind("mouseover",function(){$(this).css("background-color","#dedede");})table.find("tr").bind("mouseout",function(){$(this).css("background-color","#fff");})//隔行变色//table.find("tr:even").css("background-color","#999");//不要用css,把他封装起来,作为类比较好。})}})(jQuery);
html代码。
<html><head><title>jQuery</title><script src="http://ajax.googleapis.com/ajax/libs/jquery/1.4.2/jquery.min.js"type="text/javascript"></script><script src="jquery.tableSelectPlugin.js" type="text/javascript"></script></head><body><style>table { font-size:12px; border:1px solid #dedede; margin:0 auto; }table tr td { border: 1px solid #B1CDE3; font-size:12px; padding: 3px 3px 3px 8px; color: #4f6b72; }table tr .title { text-align:left; }</style><table><tr><th><label><input id="allSel" type="checkbox" name="all"/>全选</label></th><th>名称</th><th>详情页</th><th>编辑宝贝</th><th>状态</th><th>预览</th><th>创建时间</th></tr><tr><td><input type="checkbox" value="" class="item"/></td><td>张三</td><td>http://www.csdn.net</td><td>编辑链接</td><td>已编辑</td><td>预览链接</td><td>1986-1-4</td></tr><tr><td><input type="checkbox" value="" class="item" /></td><td>张三</td><td>http://www.csdn.net</td><td>编辑链接</td><td>已编辑</td><td>预览链接</td><td>1986-1-4</td></tr><tr><td><input type="checkbox" value="" class="item" /></td><td>张三</td><td>http://www.csdn.net</td><td>编辑链接</td><td>已编辑</td><td>预览链接</td><td>1986-1-4</td></tr><tr><td><input type="checkbox" value="" class="item"/></td><td>张三</td><td>http://www.csdn.net</td><td>编辑链接</td><td>已编辑</td><td>预览链接</td><td>1986-1-4</td></tr><tr><td><input type="checkbox" value="" class="item"/></td><td>张三</td><td>http://www.csdn.net</td><td>编辑链接</td><td>已编辑</td><td>预览链接</td><td>1986-1-4</td></tr></table><script>$("table").tableSelectPlugin({id_all: "allSel",cls_item: "item",});</script></body></html>结束了,这样的一个简单的tableUI jquery插件。
后续如果我有时间会贴出一个更好的版本。
(2014年3月19日22:06:05)
0 0
- checkbox全选、table的相关jquey插件设计
- WPF之CheckBox组的全选设计
- table表格的checkbox的全选和选中
- 通过Jquery全选或全部取消某个table的checkbox
- boostrap table插件的分页与checkbox
- jquey实现checkbox的选中及取消
- jquery table 全选框插件
- html table中嵌入checkbox实现全选
- checkbox的全选、全不选
- checkbox的全选、全不选
- js 的checkbox 全选
- CHECKBOX"全选"的JavaScript
- checkbox的全选效果
- checkbox的全选操作
- checkbox数组的全选
- CheckBox全选的实现
- checkbox 全选的问题
- checkbox的全选
- 关于jetty
- HttpModule201403更新
- 算法--第二次作业
- hdu 4610 Cards (贪心+暴力)
- linux sysctl -p 报error: "net.bridge.bridge-nf-call-ip6tables" is an unknown key
- checkbox全选、table的相关jquey插件设计
- 微软面试100题1-10
- 1044. Shopping in Mars
- 使用WdatePicker.js显示日期选择控件,并进行设置
- 边缘检测(7)Canny边缘算子
- 使用jetty-maven-plugin插件进行测试
- 小布老师-PL_SQL(第四讲)
- qduoj-36 自然数拆分 (高效深搜)
- Uva 11361 Investigating Div-Sum Property 解题报告(递推)