jQuery插件编写学习中遇见的问题--attr prop
个人博客:
最近在学习jQuery的插件的编写,有两种方式,$.fn.extend以及$.extend,一种是作用于对象原型上,一种是直接作用于jQuery对象。我接下来编写的是表格奇偶数不同色,checkbox选择则高亮显示,使用的$.fn.extend。具体html如下:
<table id="table1">
<thead>
<tr>
<th></th>
<th>姓名</th>
<th>性别</th>
<th>所在地</th>
</tr>
</thead>
<tbody>
<tr>
<td><input type="checkbox"/></td>
<td>张三</td>
<td>女</td>
<td>浙江杭州</td>
</tr>
<tr>
<td><input type="checkbox"/></td>
<td>李四</td>
<td>男</td>
<td>湖南长沙</td>
</tr>
<tr>
<td><input type="checkbox"/></td>
<td>王二</td>
<td>女</td>
<td>浙江温州</td>
</tr>
<tr>
<td><input type="checkbox"/></td>
<td>McChen</td>
<td>男</td>
<td>北京</td>
</tr>
<tr>
<td><input type="checkbox"/></td>
<td>NVSHEN</td>
<td>女</td>
<td>浙江杭州</td>
</tr>
</tbody>
</table>
html无非就是一个简单的表格而已。接下来是我随意设置的样式,这个全凭个人喜好啦~~
.even { background:#FFF38F;} .odd { background: #FFFFEE;} .selected { background: #ff0000;}
简单说一下 even是偶数行样式,odd是奇数行样式,selected是选中的样式即高亮。
接下来是重点,遇见的问题也在这。先附上使用attr时的代码。
;(function ($) {
$.fn.extend({
"tableColor": function (options) {
return this.each(function () {
var aaa = $.extend({
odd : "odd",
even : "even",
selected : "selected"
},options);
$("tbody>tr:odd",this).addClass(aaa.odd);
$("tbody>tr:even",this).addClass(aaa.even);
$("tbody>tr",this).on("click",function () {
var hasSelected = $(this).hasClass(aaa.selected); //判断是否选中
//判断是否选中然后增加或移除class
$(this)[hasSelected?"removeClass":"addClass"](aaa.selected)
.find(":checkbox").attr("checked",!hasSelected); //console.log(1)
});
$("tbody>tr:has(:checked)",this).addClass(aaa.selected);
return this;
})
}
})
})(jQuery);
//------------------------以上是插件编写的代码
接下来是插件的使用方法。
//------------------------开始测试插件的应用
$(function () {
$("#table1").tableColor()
.find("th").css("color","red");
})
个人看来jq插件需要具备最基本的两点,一可以自定义参数,二返回的是对象可以进行链式操作。
让我们一起看看使用attr设置checked的时候的效果图。
然后我们将16行中attr换成prop,效果图如下:
当我们使用attr设置checked属性时,发现只有初次生效,解决的办法是使用prop。
至于原因,我也只能浅析地说一下我个人看法:
官方对于prop()的解释是获取在匹配的元素集中的第一个元素的属性值,它的返回值不同于attr,为true或false。(attr返回checked或""),因此总结一下适用范围:
1.添加属性名称该属性就会生效应该使用prop();
2.是有true,false两个属性使用prop();
3.其他则使用attr();
但是,官方推荐使用的是attr,这我有点不知甚解。
--------------------------以上纯属本人拙见,如有错误之处,恳请指出!~谢谢------------------------
jQuery插件编写学习中遇见的问题--attr prop的更多相关文章
- (转)jQuery插件编写学习+实例——无限滚动
原文地址:http://www.cnblogs.com/nuller/p/3411627.html 最近自己在搞一个网站,需要用到无限滚动分页,想想工作两年有余了,竟然都没有写过插件,实在惭愧,于是简 ...
- jQuery插件编写学习+实例——无限滚动
最近自己在搞一个网站,需要用到无限滚动分页,想想工作两年有余了,竟然都没有写过插件,实在惭愧,于是简单学习了下jQuery的插件编写,然后分享出来. 先说下基础知识,基本上分为两种,一种是对象级别的插 ...
- jQuery插件编写及链式编程模型小结
JQuery极大的提高了我们编写JavaScript的效率,让我们可以愉快的编写代码,做出各种特效.大多数情况下,我们都是使用别人开发的JQuery插件,今天我们就来看看如何把我们常用的功能做出JQu ...
- jQuery插件编写及链式编程模型
jQuery插件编写及链式编程模型小结 JQuery极大的提高了我们编写JavaScript的效率,让我们可以愉快的编写代码,做出各种特效.大多数情况下,我们都是使用别人开发的JQuery插件,今天我 ...
- jQuery插件编写,
jQuery插件编写 jQuery插件 最近搞jquery插件的编写这里做下笔记 给jquery扩展的方式很多,看的我眼花缭乱 方式1 $.fun=function(){} 方式2 $.fn.fun= ...
- JQuery插件的学习
此前一直想就关于Jquery插件的开发,做一个深入的学习,由于各种原因,当然主要是自己太懒了...今天就系统分析一下Jquery插件的开发(参考了http://www.xprogrammer.com/ ...
- Jquery 插件初学习
参考文章:插件开发精品教程,让你的jQuery提升一个台阶 刚刚学了一下jquery的插件插件开发,写个demo记录.练习一下.毕竟,输出才是最好的学习. 这个也不过是最基础的一个插件写法,只是,自己 ...
- jQuery插件编写步骤详解
如今做web开发,jquery 几乎是必不可少的,就连vs神器在2010版本开始将Jquery 及ui 内置web项目里了.至于使用jquery好处这里就不再赘述了,用过的都知道.今天我们来讨论下jq ...
- jquery插件编写【转载】
如今做web开发,jquery 几乎是必不可少的,就连vs神器在2010版本开始将Jquery 及ui 内置web项目里了.至于使用jquery好处这里就不再赘述了,用过的都知道.今天我们来讨论下jq ...
随机推荐
- 使用Elastic APM监控你的.NET Core应用
作者:Jax 前言 在应用实际的运维过程中,我们需要更多的日志和监控来让我们对自己的应用程序的运行状况有一个全方位的了解.然而对于大部分开发者而言,平时大家所关注的更多的是如何更优雅的实现业务,或者是 ...
- 【Hystrix】实现服务隔离和降级
一.背景 1.1 服务熔断 1.2 服务降级 1.3 服务隔离 1.4 总结 二.使用Hystrix实现服务隔离和降级 2.1 Hytrix 简介 2.2 线程池方式 2.3 信号量 三.项目搭建 3 ...
- Day003_Linux基础——系统目录结构
Linux系统的目录结构: 圆型节点代指目录,方型节点代指文件. 图中省去了很多不常用的目录与文件. 稍后单独讲/proc目录与/var目录. /usr 目录. /usr/local 用户个人安装的软 ...
- zabbix -- 学习之一
网上说这东西是运维必须学会的东西,于是乎捣鼓的第一步就开始了. 首先,在度娘上搜索了一下,找到了官网,按照官网的说法没操作成功.后来照这博主的帖子(https://www.cnblogs.com/xi ...
- 049 模块6-wordcloud库的使用
目录 一.wordcloud库基本介绍 1.1 wordcloud库概述 1.2 wordcloud库的安装 二.wordcloud库使用说明 2.1 wordcloud库基本使用 2.2 wordc ...
- 060 Python必备库-从数据处理到人工智能
目录 一.概述 1.1 从数据处理到人工智能 二.Python库之数据分析 2.1 numpy 2.2 pandas 2.3 scipy 三.Python库之数据可视化 3.1 matplotlib ...
- Spinner列表选择框
Spinner首先它是一个弹出式的列表选择框,由于间接继承了ViewGroup,所以它可以当做一个容器使用; 如果我们可以明确下拉列表中的列表项, 则可以不需要编写代码, 只需要为spinner指定a ...
- xshell使用小技巧
1. 方便复制:Tool --> options --> right buttion(paste the clipboard contents) and copy selected te ...
- Winform中实现ZedGraph的多条Y轴(附源码下载)
场景 Winforn中设置ZedGraph曲线图的属性.坐标轴属性.刻度属性: https://blog.csdn.net/BADAO_LIUMANG_QIZHI/article/details/10 ...
- Linux环境下MySQL的安装、密码策略、忘记密码后的破解及用户授权等。
mysql安装.用户密码.密码策略.授权用户等(mysql5.7版本) 1.mysql安装后相关目录与文件: 主配置文件: /etc/my.cnf 数据库目录: /var/lib/mysql/ 默认端 ...