jQuery2.0+中自定义选择器插件

jQuery中自定义插件,主要可以分为三大类:封装对象方法的插件、封装全局函数的插件、选择器插件。
以下分享低版本jQuery和jQuery2.0+版本中选择器插件的使用:

原理:
       jQuery的选择符解析器首先会使用一组正则表达式来解析选择器,然后针对解析出的每个选择符执行一个函数,称为选择器函数。最后根据这个选择器函数的返回值为true还是false来决定是否保留这个元素。这样就可以找到匹配的元素节点

先上代码,在解析:

低版本jQuery

<html xmlns="http://www.w3.org/1999/xhtml">
<head>
  <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
    <!--   引入jQuery -->
    <script src="../../scripts/jquery-1.4.js" type="text/javascript"></script>
    <script    type="text/javascript">
        //插件编写
        ;(function($) {
            $.extend(jQuery.expr[":"], {
                between :    function( a , i ,m ) {
                    var tmp=m[3].split(","); //将传递进来的m[3]以逗号为分隔符,切成一个数组
                    return tmp[0]-0<i&&i<tmp[1]-0;
                }
            });
        })(jQuery);
        //插件应用
        $(function(){
            $("div:between(2,5)").css("background","white");
        })
    </script>
</head>
<body>
<div style="background:red">0</div>
<div style="background:blue">1</div>
<div style="background:green">2</div>
<div style="background:yellow">3</div>
<div style="background:gray">4</div>
<div style="background:orange">5</div>
</body>
</html>

注意:这里参数i是有效的

jQuery2.0+版本

<!DOCTYPE html>
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
    <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
    <script src="../Content/js/jquery-2.1.3.js"></script>
    <script type="text/javascript">
        ; (function ($) {
            $.extend(jQuery.expr[":"], {
                between: function (a, i, m) {
                    var tmp = m[3].split(","); //将传递进来的m[3]以逗号为分隔符,切成一个数组
                    return tmp[0]< $(a).index() && $(a).index() < tmp[1];
                }
            });
        })(jQuery);
    </script>
    <script type="text/javascript">
        $(function () {
            $("div:between(2,5)").css("background", "white");
        });
    </script>
</head>
<body>
    <div style="background-color: red">0</div>
    <div style="background-color: yellow">1</div>
    <div style="background-color: green">2</div>
    <div style="background-color: blue">3</div>
    <div style="background-color: olive">4</div>
    <div style="background-color: orange">5</div>
</body>
</html>

注意在高版本中,无法使用参数i,通过index()替换即可!
---------------------------------------------------------分割线-------------------------

其他说明:
例子中用到了function(a,i,m){//……},如下说明:

参数 说明
a 指向的事当前遍历到的DOM元素
i 指的事当前遍历到的DOM元素的索引值,从0开始。
(注意:高版本中不起作用,可以用$(a).index()来代替)
m 其有jQuery正则解析引擎进一步解析后的产物,是一个长度为4的数组:

m[0] 为jQuery选择器进行匹配内容。
例如:$(“div:gt(1)”),m[0]为gt(1)
m[1] 选择器的引导符,匹配例子中的”:”.
当然并非只能使用”:”后面跟上选择器,用户可以自定义其他的选择器引导符。
m[2] 确定调用哪个选择器函数,例如上例中gt
m[3] 选择器函数传入的参数,例如上例中1
m[3]为编写选择器最重要一个参数
m[4] 较少使用,指代选择器函数中嵌套函数的参数.
例如:div:l(ss(dd)),此时就为(dd)

例子引用资料&&更多学习可以参考:《锋利的jQuery》

时间: 2024-08-03 10:26:27

jQuery2.0+中自定义选择器插件的相关文章

CentOS 7 中自定义nagios 插件脚本

一. 系统环境 操作系统:CentOS 7 nagios 服务器端版本:nagios-4.0.8-2.el7.x86_64 nrpe  客户端版本:nrpe-2.15-7.el7.x86_64 二.nagios自定义插件返回码:      Return Code     Service State     Host State        0                   OK                  UP        1                   WARNING 

hadoop2.6.0中自定义分割模式

最近在学习hadoop,用的hadoop2.6.0 然后在学习编写mapreduce程序时,发现默认对文件的输入是采用每行进行分割,下面来分析下改变这个分割方式的办法: 来看看默认是怎样实现的: 如果不使用Job的setInputFormatClass()设置,默认的InputFormat类是使用TextInputFormat类 TextInputFormat类是继承自FileInputFormat FileInputFormat 实现了 InputFormat接口 TextInputForma

Phonegap中自定义插件的使用

在phonegap中需要实现特定相关的功能,可能需要自定义扩展一下功能,那么扩展phonegap组件就成为了可能. 源代码结构图: 本文目的在于讲述怎么扩展一个phonegap组件以及实现. 针对phonegap中activty扩展类: Java代码   package com.easyway.phonegap.datepicker; import com.phonegap.*; import android.os.Bundle; /** * 实现DroidGap的 * * @Title: * 

unity中使用FingerGestures插件3.0

FingerGestures是一个unity3D插件,用来处理用户动作,手势. 译自FingerGestures官方文档 目录 FingerGestures包结构 FingerGestures例子列表 设置场景 教程:识别一个轻敲手势 教程:手势识别器 教程:轻击手势识别器 教程:拖拽手势识别器 教程:滑动手势识别器 教程:长按手势识别器 教程:缩放手势识别器 教程:旋转手势识别器 教程:自定义手势识别器 教程:识别手势事件 建议:使用.net代理事件 fingerGestures包结构 路径,

分享在MVC3.0中使用jQuery DataTable 插件

前不久在网络上看见一个很不错的jQuery的DataTable表格插件.后来发现在MVC中使用该插件的文章并不多.本文将介绍在MVC3.0如何使用该插件.在介绍该插件之前先简单介绍一下,推荐该插件的原因.在项目中我使用jqgrid比较多.但是发现当进行样式调整时jqgrid的样式常常会让美工头疼.而datatable插件却是一个轻量级的jQuery插件.当我通过浏览器查看该js插件rander后的源码.发现只是一个简单的html table,非常简洁.那么在没有特殊要求的情况下使用这个插件,开发

Android开发如何在4.0及以上系统中自定义TitleBar

本文将通过一个实例讲解怎么实现在4.0及以上系统版本中实现自定义TitleBar,这只是我自己找到的一种方法; xml布局文件 activity_main.xml <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http://schemas.android.com/tools" android:layout_width="m

vue中自定义组件(插件)

vue中自定义组件(插件) 原创 2017年01月04日 22:46:43 标签: 插件 在vue项目中,可以自定义组件像vue-resource一样使用Vue.use()方法来使用,具体实现方法: 1.首先建一个自定义组件的文件夹,比如叫loading,里面有一个index.js,还有一个自定义组件loading.vue,在这个loading.vue里面就是这个组件的具体的内容,比如: <template> <div> loading.............. </div

一起学习jQuery2.0.3源码—1.开篇

write less,do more jQuery告诉我们:牛逼的代码不仅精简而且高效! 2006年1月由美国人John Resig在纽约的barcamp发布了jQuery,吸引了来自世界各地众多JavaScript高手加入,由Dave Methvin率领团队进行开发.如今,jQuery已经成为最流行的JavaScript框架,在世界前10000个访问最多的网站中,有超过55%在使用jQuery. jQuery 版本:截止2013年6月的版本是2.0.3和1.10.2.其中,jQuery1.10

flatpickr功能强大的日期时间选择器插件

flatpickr日期时间选择器支持移动手机,提供多种内置的主题效果,并且提供对中文的支持.它的特点还有: 使用SVG作为界面的图标. 兼容jQuery. 支持对各种日期格式的解析. 轻量级,高性能,压缩后的版本仅6K大小. 对手机原生日期格式的支持. 下图说明了使用jQuery UI.Bootstrap.packadate.js和flatpickr拉齐制作一个日期时间选择器时,所需要的文件尺寸大小: 下图是flatpickr日期时间选择器的各种主题效果: 配置参数 在配置参数中,所有的类型为s