`
axl234
  • 浏览: 260380 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

12个很棒的jQuery选择器扩展

 
阅读更多

下面是一个用jQuery编写选择器的模版文件,你需要的全都在这里:

$.extend($.expr[':'],
{
    selectorName: function(el, i, m)
    {
        return true/false;
    },
    
    selectorName2: function(el, i, m)
    {
        return true/false;
    }
});

下面是两种调用一个选择器的方法,一种带有一个参数而另一种则没有参数:

i与m参数可以是缺省的,当传入一个集合,他们只是用来匹配一个参数的当前元素的索引。当你传入一个参数时,匹配器便开始工作了,这是一个正则表达式匹配器,返回类似如下信息:

[":width(>100)", "width", "", ">100"]

你会经常使用到m[3]的值,至此,便由你决定如何处理传入的参数。下面给出了一系列的例子。

我们可以与jQuery已有的选择器一起进行链式的调用,这是相当有意思的:

$("#container :isBold:even");
$("#container :leftOf(#element):width(>100):height(>100)");

以下列出12个自定义的选择器实例,你可以在这些选择器中放入任何内容,只要你根据当前元素是否通过选择器测试返回true或者false值即可。

1、:loaded

选择所有加载完的图片:

$.extend($.expr[':'],
{
    loaded: function(el)
    {
        return $(el).data('loaded');
    }
}

$('img').load(function(){ $(this).data('loaded', true); });
$('img:loaded');

2、:width

选择所有宽度大于或小于指定值的元素:

$.extend($.expr[':'],
{
    width: function(el, i, m)
    {
        if(!m[3]||!(/^(<|>)\d+$/).test(m[3])) {return false;}
        return m[3].substr(0,1) === '>' ? 
            $(el).width() > m[3].substr(1) : $(el).width() < m[3].substr(1);
    }
}

$('#container :width(>100)');

3、:height

选择所有高度大于或小于指定值的元素:

$.extend($.expr[':'],
{
    height: function(el, i, m)
    {
        if(!m[3]||!(/^(<|>)\d+$/).test(m[3])) {return false;}
        return m[3].substr(0,1) === '>' ? 
            $(el).height() > m[3].substr(1) : $(el).height() < m[3].substr(1);
    }
}

$('#container :height(<100)');

4、:leftOf

选择在指定元素左边的所有元素

$.extend($.expr[':'],
{
    leftOf: function(el, i, m)
    {
        var oe = $(el).offset();
        var om = $(m[3]).offset();

        return oe.left + $(el).width() < om.left;
    }
}

$('#container :leftOf(#element)');

5、:rightOf

选择在指定元素右边的所有元素

$.extend($.expr[':'],
{
    rightOf: function(el, i, m)
    {
        var oe = $(el).offset();
        var om = $(m[3]).offset();

        return oe.left > om.left + $(m[3]).width();
    }
}

$('#container :rightOf(#element)');

6、:external

选择所有带外站链接的锚点标签

$.extend($.expr[':'],
{
    external: function(el)
    {
        if(!el.href) {return false;}
        return el.hostname && el.hostname !== window.location.hostname;
    }
}

$('#container :external');

7、:target

选择指定target属性的锚点标签

 

$.extend($.expr[':'],
{
    target: function(el, i, m)
    {
        if(!m[3]) {return false;}
        return (m[3] === '_self' && ($(el).attr('target') == '' || !el.target)) || 
            (m[3] === $(el).attr('target'));
    }
}

$('#container :target(_self)');

8、:inView

选取位于可视窗口内的所有元素

 

$.extend($.expr[':'],
{
    inView: function(el)
    {
        var offset = $(el).offset();

        return !(
            (offset.top > $(window).height() + $(document).scrollTop()) || 
            (offset.top + $(el).height() < $(document).scrollTop()) || 
            (offset.left > $(window).width() + $(document).scrollLeft()) || 
            (offset.left + $(el).width() < $(document).scrollLeft())
        )
    }
}

$('#container :inView');

9、:largerThan

选取比指定元素大的所有元素

$.extend($.expr[':'],
{
    largerThan: function(el, i, m)
    {
        if(!m[3]) {return false;}
        return $(el).width() * $(el).height() > $(m[3]).width() * $(m[3]).height();
    }
}

$('#container :largerThan(#element)');

10、:isBold

选择font-weight为700的所有元素、

$.extend($.expr[':'],
{
    isBold: function(el)
    {
        return $(el).css("fontWeight") === '700';
    }
}

$('#container :isBold');

11、:color

选择颜色为指定RGB值的所有元素

$.extend($.expr[':'],
{
    color: function(el, i, m)
    {
        if(!m[3]) {return false;}
        return $(el).css('color') === m[3];
    }
}

$("#container :color(rgb(255, 0, 0))");

12、:hasId

选择存在id属性的所有元素

$.extend($.expr[':'],
{
    hasId: function(el)
    {
        return $(el).attr('id') !== undefined && $(el).attr('id') !== '';
    }
}

$("#container :hasId");

 

分享到:
评论

相关推荐

    jquery datetimepicker 日期选择器扩展(选择时、分)

    NULL 博文链接:https://hoodbc.iteye.com/blog/1107779

    1JQUERY的选择器

    JQUERY的选择器:简洁的语法和跨平台的兼容性,极大的简化了javascript开发人员遍历HTML文档、操作DOM、处理事伯、执行动画操作AJAX的操作。 屏蔽浏览器差异,对DOM的操作提供了方便的扩展,易用的事件处理API和动画...

    jQuery基于citypicker四级联动菜单选择器代码

    jQuery基于citypicker四级联动菜单选择器代码,数据异步获取,动态赋值。扩展需求可修改源码。

    锋利的jQuery_高清_书签.part2

    2.1 jQuery选择器是什么 2.2 jQuery选择器的优势 2.3 jQuery选择器 2.3.1 基本选择器 2.3.2 层次选择器 2.3.3 过滤选择器 2.3.4 表单选择器 2.4 应用jQuery改写示例 2.5 选择器中的一些注意事项 2.5.1 选择器中含有...

    jQuery权威指南-源代码

    2.2 jQuery选择器详解/17 2.2.1 基本选择器/18 2.2.2 层次选择器/20 2.2.3 简单过滤选择器/22 2.2.4 内容过滤选择器/25 2.2.5 可见性过滤选择器/27 2.2.6 属性过滤选择器/28 2.2.7 子元素过滤选择器/30 ...

    jquery包.zip

    使用jquery需要导入的jar包,方便学习查阅,jquery是一个快速、简洁的JavaScript框架,是继Prototype之后又一个优秀的...具有高效灵活的css选择器,并且可对CSS选择器进行扩展;拥有便捷的插件扩展机制和丰富的插件。

    boxy基于jquery的弹出层对话框插件扩展应用 弹出层选择器

    我们使用热门的jquery进行设计,同时我们选择效果比较优秀的...这里介绍行业、职位和地区选择器,下载的Demo包含这三个选择器。 行业选择器:无关联,调用语句为Boxy.industry(value, callback, options),参数value为已

    JQuery权威指南源代码

    使用jQuery选择器实现隔行变色 JavaScript代码检测页面元素 jQuery代码检测页面元素 使用jQuery基本选择器 使用jQuery层次选择器 使用jQuery基本过滤选择器 使用jQuery内容过滤选择器 使用jQuery可见性过滤...

    自己扩展的jQuery插件

    自己学习jQuery过程中用jQuery强大的DOM选择器和方法扩展的JS代码,里面带了详细说明和demo,学习jQuery半个月,就这点成果,共享一下,呵呵

    jQuery选择器实例应用

    刚学完jQuery选择器,闲来无事,照着书上的范例敲了一段代码(HTML和CSS抄自书上),自己试着写了写jQuery的代码,感觉相当轻便啊。 显示效果: 功能说明:  1、点击上边的图书分类一栏,实现向下的伸缩扩展,...

    jquery中文手册.chm

    jQuery是一个快速、简洁的JavaScript...具有高效灵活的css选择器,并且可对CSS选择器进行扩展;拥有便捷的插件扩展机制和丰富的插件。jQuery兼容各种主流浏览器,如IE 6.0+、FF 1.5+、Safari 2.0+、Opera 9.0+等。 [1]

    JQuery Collision:jQuery扩展返回两个选择器之间的冲突。-开源

    jQuery扩展返回两个选择器之间的冲突。 处理填充,边距,边界,并可以确定重叠或外部部分。 返回JQuery“重叠”对象。 需要:jquery1.8.3 +,示例还需要:jqueryui1.9.2 +试试看:...

    column-selector:jQuery 列选择器

    这个插件向 jQuery 选择器 API 添加了一个新的选择器,用于按列索引检索表格单元格。 它透明地支持具有列和行跨度的表格,无论您的表格多么复杂。 语法简单且与其他 jQuery 选择器相似,因此学习曲线非常小。 以下...

    JQuery_1.5API中文参考手册

    具有高效灵活的CSS选择器,并且可对CSS选择器进行扩展;拥有便捷的插件扩展机制和丰富的插件。jQuery兼容各种主流浏览器,如IE 6.0+、FF 1.5+、Safari 2.0+、Opera 9.0+等。 JQuery_1.5API中文参考手册

    JQuery核心用法快速查询文档

    JQuery核心用法、快速查询文档、简单实用...具有高效灵活的css选择器,并且可对CSS选择器进行扩展;拥有便捷的插件扩展机制和丰富的插件。jQuery兼容各种主流浏览器,如IE 6.0+、FF 1.5+、Safari 2.0+、Opera 9.0+等。

    jquery.1.11.1.js 和 jquery.1.11.1.min.js

    jQuery是一个快速、简洁的JavaScript框架...具有高效灵活的css选择器,并且可对CSS选择器进行扩展;拥有便捷的插件扩展机制和丰富的插件。jQuery兼容各种主流浏览器,如IE 6.0+、FF 1.5+、Safari 2.0+、Opera 9.0+等。

    jquery1.9版本

    jQuery的选择机制构建于Css的选择器,它提供了快速查询DOM文档中元素的能力,而且大大强化了JavaScript中获取页面元素的方式。 jQuery是一个快速、简洁的JavaScript框架,是继Prototype之后又一个优秀的JavaScript...

    jQuery.extend()、jQuery.fn.extend()扩展方法示例详解

    其中jQuery.extend()方法能够创建全局函数或者选择器,而jQuery.fn.extend()方法能够创建jQuery对象方法. 例如: 代码如下: jQuery.extend({ showName : function(name){ alert&#40;name&#41; } }); jQuery.showName...

    jquery-ui包含功能演示及代码

     jQuery UI实际上是jQuery插件,专指由jQuery官方维护的UI方向的插件 jQuery UI 与 jquery 的主要区别是: (1) jQuery是一个js库,主要提供的功能是选择器,属性修改和事件绑定等等。 (2) jQuery UI则是在jQuery的...

Global site tag (gtag.js) - Google Analytics