jQuery自定义选择器

jQuery 1.8版本后, 可以通过$ 的createPseudo()方法自定义选择器,满足不同的需求,本文来自<jquery in action>

<ul class="levels">
  <li data-level="1" data-points="1" data-technologies="javascrip grunt node">level 1</li>
  <li data-level="2" data-points="10" data-technologies="php composer">level 2</li>
  <li data-level="3" data-points="100" data-technologies="jquery requirejs">level 3</li>
  <li data-level="4" data-points="1000" data-technologies="javascript jquery backbone">level 4</li>
</ul>

1.选择等级高于2的, 分数高于100的li

$.expr[":"].requireLevel = $.expr.createPseudo(function(param) {
        return function(element, context, isXML) {
        return element.getAttribute("data-level") > 2 && 
                  element.getAttribute("data-points") > 100;
    }
})
$("ul li:requireLevel(2, 100)").css({
    "color": "aqua",
  "background": "yellow"
});

 

2.选择分数高于50的

$.expr[":"].highPoint = $.expr.createPseudo(function(param) {
        var points = parseInt(param, 10);  //缓存参数,以便下面闭包环境中能使用
    return function(element, context, isXML) {
        return  element.getAttribute("data-points") > points;
    }
})
$("ul li:highPoint(50)").css({
"fontSize": "1.4em"
});

 

3.几个选择器

1 选择所有没有子节点,在文档中位置为偶数,并且不包含wrapper类名的所有div
  $("div:empty:even:not(.wrap)")

2 选择form中第一个元素是input,类型为password,并且包含required特性 的 input
  $("input[required]:password:first-child", "form")

3 选择所有的a, p,其祖先元素为div
  $("div a, div p") 或者 $("a, p", "div")

4 选择元素只包含数字,字符, 或下划线(使用自定义选择器)
  $.expr[":"].onlyText = $.expr.createPseudo(function (filterParam) {
    return function(element, context, isXML) {
       return element.innerHTML.match("/^\w+$/");
      } 
  });

 

转载于:https://www.cnblogs.com/JamesSawyer/p/5739887.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值