个人博客:

https://chenjiahao.xyz


最近在学习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的更多相关文章

  1. (转)jQuery插件编写学习+实例——无限滚动

    原文地址:http://www.cnblogs.com/nuller/p/3411627.html 最近自己在搞一个网站,需要用到无限滚动分页,想想工作两年有余了,竟然都没有写过插件,实在惭愧,于是简 ...

  2. jQuery插件编写学习+实例——无限滚动

    最近自己在搞一个网站,需要用到无限滚动分页,想想工作两年有余了,竟然都没有写过插件,实在惭愧,于是简单学习了下jQuery的插件编写,然后分享出来. 先说下基础知识,基本上分为两种,一种是对象级别的插 ...

  3. jQuery插件编写及链式编程模型小结

    JQuery极大的提高了我们编写JavaScript的效率,让我们可以愉快的编写代码,做出各种特效.大多数情况下,我们都是使用别人开发的JQuery插件,今天我们就来看看如何把我们常用的功能做出JQu ...

  4. jQuery插件编写及链式编程模型

    jQuery插件编写及链式编程模型小结 JQuery极大的提高了我们编写JavaScript的效率,让我们可以愉快的编写代码,做出各种特效.大多数情况下,我们都是使用别人开发的JQuery插件,今天我 ...

  5. jQuery插件编写,

    jQuery插件编写 jQuery插件 最近搞jquery插件的编写这里做下笔记 给jquery扩展的方式很多,看的我眼花缭乱 方式1 $.fun=function(){} 方式2 $.fn.fun= ...

  6. JQuery插件的学习

    此前一直想就关于Jquery插件的开发,做一个深入的学习,由于各种原因,当然主要是自己太懒了...今天就系统分析一下Jquery插件的开发(参考了http://www.xprogrammer.com/ ...

  7. Jquery 插件初学习

    参考文章:插件开发精品教程,让你的jQuery提升一个台阶 刚刚学了一下jquery的插件插件开发,写个demo记录.练习一下.毕竟,输出才是最好的学习. 这个也不过是最基础的一个插件写法,只是,自己 ...

  8. jQuery插件编写步骤详解

    如今做web开发,jquery 几乎是必不可少的,就连vs神器在2010版本开始将Jquery 及ui 内置web项目里了.至于使用jquery好处这里就不再赘述了,用过的都知道.今天我们来讨论下jq ...

  9. jquery插件编写【转载】

    如今做web开发,jquery 几乎是必不可少的,就连vs神器在2010版本开始将Jquery 及ui 内置web项目里了.至于使用jquery好处这里就不再赘述了,用过的都知道.今天我们来讨论下jq ...

随机推荐

  1. Codeforces 735D Taxes(简单数论)

    题目链接 http://codeforces.com/problemset/problem/735/D 题意:一个人的收入为n他要交的税是n的最大除数,他为了少缴税将n分成k个数n1,n2,n2... ...

  2. Atcoder C - Closed Rooms(思维+bfs)

    题目链接:http://agc014.contest.atcoder.jp/tasks/agc014_c 题意:略. 题解:第一遍bfs找到所有可以走的点并标记步数,看一下最少几步到达所有没锁的点,然 ...

  3. 深入分析Mybatis 使用useGeneratedKeys获取自增主键

    摘要 我们经常使用useGenerateKeys来返回自增主键,避免多一次查询.也会经常使用on duplicate key update,来进行insertOrUpdate,来避免先query 在i ...

  4. 【Offer】[54] 【二叉搜索树的第k小节点】

    题目描述 思路分析 测试用例 Java代码 代码链接 题目描述 给定一棵二叉搜索树,请找出其中第k小的节点.例如,在下图的二叉搜索树里,按节点数值大小顺序,第三小节点的值是4.  牛客网刷题地址 思 ...

  5. 小米下拉框jQuery实现

    <div class="daohanglan"> <div class="dh">小米手机 <--多个自己定义--> < ...

  6. Mac环境IntelliJ IDEA配置JDK提示The selected directory is not a valid home for JDK

    笔者使用mac配置如下: 硬件环境:MacBook Pro 操作系统:MacOS Sierra 10.13.6 开发工具:IntelliJ IDEA 2016.x JDK版本:已有Open JDK 8 ...

  7. C# 表达式树Lambda扩展(四)

    一.前言 本来计算这篇文章在后面需要运用的时候写的,但是既然写到表达式的扩展呢,就一起写完吧. 看到这个标题就有一种疑问,Lambda表达式本来就是表达式树,还需要怎么扩展?那就看看下面的内容,你就知 ...

  8. fremark遍历出的li怎么加事件(cforeach循环遍历也同样适用)

    遇见这个问题烦了好久好久,网上也没找到答案,琢磨了半天终于找到了方法 1.下面是一个分页信息遍历添加事件,页面跳转 <!-- 分页条信息 --> <div class="c ...

  9. 表达式树练习实践:C#值类型、引用类型、泛型、集合、调用函数

    目录 表达式树练习实践:C#值类型.引用类型.泛型.集合.调用函数 一,定义变量 二,访问变量/类型的属性字段和方法 1. 访问属性 2. 调用函数 三,实例化引用类型 四,实例化泛型类型于调用 五, ...

  10. Basler acA2500-14gm 连接采图报错处理

    新购 Basler acA2500-14gm 相机,使用从官方网站下载的 pylon v6 版本连接测试,报错: Type    Time    Source    MessageError    2 ...