前面的话

  过滤是jQuery扩展的一个重要的内容。jQuery选择器中的一个重要部分就是过滤选择器。除了过滤选择器,还有专门的元素过滤的方法。本文将详细介绍jQuery元素过滤

索引过滤

  索引选择器是jQuery过滤选择器的一部分。与此同时,也存在功能相似的索引相关的方法,包括eq()、first()、last()

eq()

  eq()方法匹配元素的集合为指定的索引的哪一个元素。eq()方法可以接受一个整数作为参数,以0为基数。若整数为负数,则从集合中的最后一个元素开始计数 

  1. <script src="http://cdn.bootcss.com/jquery/1.12.4/jquery.min.js"></script>
  2. <ul>
  3. <li>list item 1</li>
  4. <li>list item 2</li>
  5. <li>list item 3</li>
  6. <li>list item 4</li>
  7. <li>list item 5</li>
  8. </ul>
  9. <button id="btn1">按钮一</button>
  10. <button id="btn2">按钮二</button>
  11. <button id="btn3">按钮三</button>
  12. <script>
  13. $('#btn1').click(function(){
  14. $('li').eq(0).css('border','1px solid red');
  15. })
  16. $('#btn2').click(function(){
  17. $('li').eq(-1).css('border','1px solid blue');
  18. })
  19. $('#btn3').click(function(){
  20. $('li').eq(2).css('border','1px solid green');
  21. })
  22. </script>

first()

  first()方法获取匹配元素集合中第一个元素,该方法不接受参数

last()

  last()方法获取匹配元素集合中最后一个元素,该方法不接受参数

  1. <script src="http://cdn.bootcss.com/jquery/1.12.4/jquery.min.js"></script>
  2. <ul>
  3. <li>list item 1</li>
  4. <li>list item 2</li>
  5. <li>list item 3</li>
  6. <li>list item 4</li>
  7. <li>list item 5</li>
  8. </ul>
  9. <button id="btn1">按钮一</button>
  10. <button id="btn2">按钮二</button>
  11. <script>
  12. $('#btn1').click(function(){
  13. $('li').first().css('border','1px solid red');
  14. })
  15. $('#btn2').click(function(){
  16. $('li').last().css('border','1px solid blue');
  17. })
  18. </script>

内容过滤

  jQuery选择器中包括内容过滤选择器,而jQuery中也存在功能类似的内容过滤的方法,包括has()、filter()、is()、not()、map()、slice()和add()

has()

  has()方法用于筛选匹配元素集合中有相匹配的选择器或DOM元素的后代元素的父元素

  1. <script src="http://cdn.bootcss.com/jquery/1.12.4/jquery.min.js"></script>
  2. <ul>
  3. <li>list item 1</li>
  4. <li>list item 2
  5. <ul>
  6. <li>list item 2-a</li>
  7. <li>list item 2-b</li>
  8. </ul>
  9. </li>
  10. <li>list item 3</li>
  11. </ul>
  12. <button id="btn">按钮</button>
  13. <script>
  14. $('#btn').click(function(){
  15. $('li').has('ul').css('border', '1px solid lightblue');
  16. })
  17. </script>

map()

  map()方法通过一个函数匹配当前集合中的每个元素

  作为参数的函数有两个参数,第一个参照是匹配集合中的元素索引,第二个参数是当前索引的DOM元素对象

  1. <script src="http://cdn.bootcss.com/jquery/1.12.4/jquery.min.js"></script>
  2. <input value="text">
  3. <input value="text">
  4. <input value="text">
  5. <button id="btn">按钮</button>
  6. <script>
  7. $('#btn').click(function(){
  8. $('input').map(function(index,dom){
  9. dom.value += index;
  10. });
  11. })
  12. </script>

filter()

  filter()方法从匹配的元素集合中筛选出指定的元素,参数可以是一个选择器字符串、一个或多个DOM元素、jQuery对象或一个函数  

  1. <script src="http://cdn.bootcss.com/jquery/1.12.4/jquery.min.js"></script>
  2. <ul>
  3. <li>list item 1</li>
  4. <li>list item 2</li>
  5. <li>list item 3</li>
  6. <li>list item 4</li>
  7. <li>list item 5</li>
  8. </ul>
  9. <button id="btn">按钮</button>
  10. <script>
  11. $('#btn').click(function(){
  12. $('li').filter(':even').css('border','1px solid lightgreen')
  13. })
  14. </script>

  filter()方法中作为参数的函数有两个参数,第一个参照是匹配集合中的元素索引,第二个参数是当前索引的DOM元素对象。如果函数返回值为true,则该元素保留;否则,该元素在匹配集合中被去除

  1. <script src="http://cdn.bootcss.com/jquery/1.12.4/jquery.min.js"></script>
  2. <ul>
  3. <li>list item 1</li>
  4. <li>list item 2</li>
  5. <li>list item 3</li>
  6. <li>list item 4</li>
  7. <li>list item 5</li>
  8. </ul>
  9. <button id="btn">按钮</button>
  10. <script>
  11. $('#btn').click(function(){
  12. $('li').filter(function(index,dom){
  13. if(!(index % 3)){
  14. $(dom).css('border','1px solid lightgreen')
  15. return true;
  16. }
  17. })
  18. })
  19. </script>

not()

  not()方法与filter()方法正好相反,它从匹配的元素集合中移除指定的元素,参数可以是一个选择器字符串、一个或多个DOM元素、jQuery对象或一个函数 

  1. <script src="http://cdn.bootcss.com/jquery/1.12.4/jquery.min.js"></script>
  2. <ul>
  3. <li>list item 1</li>
  4. <li>list item 2</li>
  5. <li>list item 3</li>
  6. <li>list item 4</li>
  7. <li>list item 5</li>
  8. </ul>
  9. <button id="btn">按钮</button>
  10. <script>
  11. $('#btn').click(function(){
  12. $('li').not(':even').css('border','1px solid lightgreen')
  13. })
  14. </script>

  not()方法中作为参数的函数有两个参数,第一个参照是匹配集合中的元素索引,第二个参数是当前索引的DOM元素对象。如果函数返回值为true,则该元素被去除;否则,该元素在匹配集合中保留

  1. <script src="http://cdn.bootcss.com/jquery/1.12.4/jquery.min.js"></script>
  2. <ul>
  3. <li>list item 1</li>
  4. <li>list item 2</li>
  5. <li>list item 3</li>
  6. <li>list item 4</li>
  7. <li>list item 5</li>
  8. </ul>
  9. <button id="btn">按钮</button>
  10. <script>
  11. $('#btn').click(function(){
  12. $('li').not(function(index,dom){
  13. if(!(index % 3)){
  14. $(dom).css('border','1px solid lightgreen')
  15. return true;
  16. }
  17. })
  18. })
  19. </script>

is()

  is()方法用于判断当前元素是否与参数相匹配,如果匹配,则返回true;否则,返回false。参数可以是一个选择器,DOM元素,jQuery对象或函数

  1. <script src="http://cdn.bootcss.com/jquery/1.12.4/jquery.min.js"></script>
  2. <ul>
  3. <li>list item 1</li>
  4. <li>list item 2</li>
  5. <li>list item 3</li>
  6. <li>list item 4</li>
  7. <li>list item 5</li>
  8. </ul>
  9. <script>
  10. $('li').click(function(){
  11. if($(this).is(':contains("2")')){
  12. $(this).css('border','1px solid black')
  13. }
  14. })
  15. </script>

  is()方法中作为参数的函数有两个参数,第一个参照是匹配集合中的元素索引,第二个参数是当前索引的DOM元素对象。如果函数返回true,is()方法也返回true,如果函数返回false,is()方法也返回false

  1. <script src="http://cdn.bootcss.com/jquery/1.12.4/jquery.min.js"></script>
  2. <ul>
  3. <li>list item 1</li>
  4. <li>list item 2</li>
  5. <li>list item 3</li>
  6. <li>list item 4</li>
  7. <li>list item 5</li>
  8. </ul>
  9. <div id="result"></div>
  10. <script>
  11. var i = 0;
  12. $('li').click(function(){
  13. ++i;
  14. if($(this).is(function(index,dom){
  15. $('#result').html(dom.innerHTML);
  16. if(i%2){
  17. return true;
  18. }
  19. })){
  20. $(this).css('border','1px solid black')
  21. }
  22. })
  23. </script>

slice()

  slice()方法根据指定的下标范围,过滤匹配的元素集合,并生成一个新的jQuery对象 

  slice(start[,end])方法接受两个参数:start和end

  start是一个整数,从0开始计数的下标。代表将要被选择的元素的起始下标。如果指定的下标是一个负数,那么代表从末尾开始计数

  end是一个整数,从0开始计数的下标。代表将要被选择的元素的结束下标。如果指定的下标是一个负数,那么代表从末尾开始计数。如果忽略此参数,则选择的范围是从start开始,一直到最后

  1. <script src="http://cdn.bootcss.com/jquery/1.12.4/jquery.min.js"></script>
  2. <ul>
  3. <li>list item 1</li>
  4. <li>list item 2</li>
  5. <li>list item 3</li>
  6. <li>list item 4</li>
  7. <li>list item 5</li>
  8. </ul>
  9. <button id="btn">按钮</button>
  10. <script>
  11. $('#btn').click(function(){
  12. $('li').slice(2,4).css('background', 'red');
  13. })
  14. </script>

add()

  add()方法添加元素到匹配的元素集合。add()方法的参数可以几乎接受任何的$(),包括一个jQuery选择器表达式,DOM元素,或HTML片段引用

  1. <script src="http://cdn.bootcss.com/jquery/1.12.4/jquery.min.js"></script>
  2. <ul>
  3. <li>list item 1</li>
  4. <li>list item 2</li>
  5. <li>list item 3</li>
  6. </ul>
  7. <div>div</div>
  8. <button id="btn">按钮</button>
  9. <script>
  10. $('#btn').click(function(){
  11. $('li').add('div').css('background', 'lightgreen');
  12. })
  13. </script>

// 0){
return;
}
if(select[i].getBoundingClientRect().top 0){
change(oCon.children[i+2])
}
}else{
change(oCon.children[select.length+1])
}
}

}
document.body.onmousewheel = wheel;
document.body.addEventListener('DOMMouseScroll',wheel,false);

var oCon = document.getElementById("content");
var close = oCon.getElementsByTagName('span')[0];
close.onclick = function(){
if(this.innerHTML == '显示目录'){
this.innerHTML = '×';
this.style.background = '';
oCon.style.border = '2px solid #ccc';
oCon.style.width = '';
oCon.style.height = '';
oCon.style.overflow = '';
oCon.style.lineHeight = '30px';
}else{
this.innerHTML = '显示目录';
this.style.background = '#3399ff';
oCon.style.border = 'none';
oCon.style.width = '60px';
oCon.style.height = '30px';
oCon.style.overflow = 'hidden';
oCon.style.lineHeight = '';
}
}
for(var i = 2; i

深入学习jQuery元素过滤的更多相关文章

  1. 深入学习jQuery元素尺寸和位置操作

    × 目录 [1]尺寸设置 [2]位置设置 前面的话 对于javascript来说,元素尺寸有scroll.offset.client三大属性,以及一个强大的getBoundingClientRect( ...

  2. 深入学习jQuery选择器系列第二篇——过滤选择器之子元素选择器

    × 目录 [1]通用形式 [2]反向形式 [3]首尾元素 [4]唯一元素 前面的话 在上一篇中已经介绍过基础选择器和层级选择器,本文开始介绍过滤选择器.过滤选择器是jQuery选择器中最为庞大也是最为 ...

  3. 从零开始学习jQuery (四) 使用jQuery操作元素的属性与样式

    本系列文章导航 从零开始学习jQuery (四) 使用jQuery操作元素的属性与样式 一.摘要 本篇文章讲解如何使用jQuery获取和操作元素的属性和CSS样式. 其中DOM属性和元素属性的区分值得 ...

  4. 深入学习jQuery选择器系列第三篇——过滤选择器之索引选择器

    × 目录 [1]通用形式 [2]首尾索引 [3]奇偶索引[4]范围索引 前面的话 上一篇介绍了过滤选择器中的子元素选择器部分,本文开始介绍极易与之混淆的索引选择器 通用形式 $(':eq(index) ...

  5. jQuery选择器之子元素过滤选择器Demo

    测试代码: 07-子元素过滤选择器.html <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" & ...

  6. jQuery内容过滤选择器与子元素过滤选择器用法实例分析

    jQuery选择器内容过滤 一.:contains(text) 选择器::contains(text)描述:匹配包含给定文本的元素返回值:元素集合 示例: ? 1 2 $("div.mini ...

  7. 《从零开始学习jQuery》:用jQuery操作元素的属性与样式

    元素属性和Dom属性简介 对于下面这样一个标签元素: <img id='img' src="1.jpg" alt='1' class="imgs"> ...

  8. jQuery学习之------元素样式的操作

    jQuery学习之------元素样式的操作 一..addClass( className )方法----增加样式 1.addClass( className ) : 为每个匹配元素所要增加的一个或多 ...

  9. jQuery中的子(后代)元素过滤选择器(四、六):nth-child()、first-child、last-child、only-child

    <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"> <html> <hea ...

随机推荐

  1. xpath使用

    一.安装(win7 64) 1.安装lxml,pip install lxml 2.如果安装出错,下载lxml-3.5.0b1.win-amd64-py2.7.exe: 地址:http://www.l ...

  2. browser-sync

    引入 大家写网页的时候,肯定都遇到这种情况,每次用sublime写完都要返回浏览器,刷新页面,而这个工具正好解决了这个问题,提高前端开发效率,这是一个npm的包 browser-sync browse ...

  3. JAVA中使用DOM解析XML文件

    XML是一种方便快捷高效的数据保存传输的格式,在JSON广泛使用之前,XML是服务器和客户端之间数据传输的主要方式.因此,需要使用各种方式,解析服务器传送过来的信息,以供使用者查看. JAVA作为一种 ...

  4. 初次接触nodejs,请多指教。

    一  安装nodejs 1.下载node.js.在http://nodejs.org/download/下载最新版的node.exe文件,我下载时是v0.10.33.下载完成后,在F盘新建nodejs ...

  5. 关于C#的微信开发的入门记录二

    在准备了空间和域名之后,现在来讲讲我们接下来的编码过程: 今天就先到这里了!没有服务器那些的请看我之前的博客:http://www.cnblogs.com/zhankui/p/4515905.html ...

  6. 浏览器兼容性-JS篇

    总结一下平时遇到的浏览器兼容性问题,本篇关于JS. 1.事件绑定 兼容写法: function add(obj,event){ if (obj.addEventListener) { obj.addE ...

  7. Kafka使用入门教程

    转载自http://www.linuxidc.com/Linux/2014-07/104470.htm 介绍 Kafka是一个分布式的.可分区的.可复制的消息系统.它提供了普通消息系统的功能,但具有自 ...

  8. Java中有关Null的9件事

    对于Java程序员来说,null是令人头痛的东西.时常会受到空指针异常 (NPE)的骚扰.连Java的发明者都承认这是他的一项巨大失误.Java为什么要保留null呢?null出现有一段时间了,并且我 ...

  9. MySQL 处理插入过程中的主键唯一键重复值办法

    200 ? "200px" : this.width)!important;} --> 介绍 本篇文章主要介绍在插入数据到表中遇到键重复避免插入重复值的处理方法,主要涉及到I ...

  10. Entity Framework Code First数据库连接

    1. 安装Entity Framework 使用NuGet安装Entity Framework程序包:工具->库程序包管理器->程序包管理器控制台,执行以下语句: PM> Insta ...