jQuery查找和过滤_动力节点节点Java学院整理


Posted in jQuery onJuly 04, 2017

通常情况下选择器可以直接定位到我们想要的元素,但是,当我们拿到一个jQuery对象后,还可以以这个对象为基准,进行查找和过滤。

最常见的查找是在某个节点的所有子节点中查找,使用find()方法,它本身又接收一个任意的选择器。例如如下的HTML结构:

<!-- HTML结构 -->
<ul class="lang">
 <li class="js dy">JavaScript</li>
 <li class="dy">Python</li>
 <li id="swift">Swift</li>
 <li class="dy">Scheme</li>
 <li name="haskell">Haskell</li>
</ul>

find()查找:

var ul = $('ul.lang'); // 获得<ul>
var dy = ul.find('.dy'); // 获得JavaScript, Python, Scheme
var swf = ul.find('#swift'); // 获得Swift
var hsk = ul.find('[name=haskell]'); // 获得Haskell

如果要从当前节点开始向上查找,使用parent()方法:

var swf = $('#swift'); // 获得Swift
var parent = swf.parent(); // 获得Swift的上层节点<ul>
var a = swf.parent('div.red'); // 从Swift的父节点开始向上查找,直到找到某个符合条件的节点并返回

对于位于同一层级的节点,可以通过next()prev()方法,例如:
当我们已经拿到Swift节点后:

var swift = $('#swift');

swift.next(); // Scheme
swift.next('[name=haskell]'); // Haskell,因为Haskell是后续第一个符合选择器条件的节点

swift.prev(); // Python
swift.prev('.js'); // JavaScript,因为JavaScript是往前第一个符合选择器条件的节点

过滤

和函数式编程的map、filter类似,jQuery对象也有类似的方法。
filter()方法可以过滤掉不符合选择器条件的节点:

var langs = $('ul.lang li'); // 拿到JavaScript, Python, Swift, Scheme和Haskell
var a = langs.filter('.dy'); // 拿到JavaScript, Python, Scheme

或者传入一个函数,要特别注意函数内部的this被绑定为DOM对象,不是jQuery对象:

var langs = $('ul.lang li'); // 拿到JavaScript, Python, Swift, Scheme和Haskell
langs.filter(function () {
 return this.innerHTML.indexOf('S') === 0; // 返回S开头的节点
}); // 拿到Swift, Scheme

map()方法把一个jQuery对象包含的若干DOM节点转化为其他对象:

var langs = $('ul.lang li'); // 拿到JavaScript, Python, Swift, Scheme和Haskell
var arr = langs.map(function () {
 return this.innerHTML;
}).get(); // 用get()拿到包含string的Array:['JavaScript', 'Python', 'Swift', 'Scheme', 'Haskell']

此外,一个jQuery对象如果包含了不止一个DOM节点,first()、last()slice()方法可以返回一个新的jQuery对象,把不需要的DOM节点去掉:

var langs = $('ul.lang li'); // 拿到JavaScript, Python, Swift, Scheme和Haskell
var js = langs.first(); // JavaScript,相当于$('ul.lang li:first-child')
var haskell = langs.last(); // Haskell, 相当于$('ul.lang li:last-child')
var sub = langs.slice(2, 4); // Swift, Scheme, 参数和数组的slice()方法一致

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持三水点靠木。

jQuery 相关文章推荐
jQuery EasyUI tree增加搜索功能的实现方法
Apr 27 jQuery
jquery处理checkbox(复选框)是否被选中实例代码
Jun 12 jQuery
使用jquery+iframe做一个ajax上传效果(实例)
Aug 24 jQuery
jQuery实现滚动效果
Nov 17 jQuery
jQuery实现获取form表单内容及绑定数据到form表单操作分析
Jul 03 jQuery
jquery 通过ajax请求获取后台数据显示在表格上的方法
Aug 08 jQuery
JQuery实现ajax请求的示例和注意事项
Dec 10 jQuery
JavaScript表格隔行变色和Tab标签页特效示例【附jQuery版】
Jul 11 jQuery
详解webpack引用jquery(第三方模块)的三种办法
Aug 21 jQuery
jquery分页优化操作实例分析
Aug 23 jQuery
javascript/jquery实现点击触发事件的方法分析
Nov 11 jQuery
jquery实现抽奖功能
Oct 22 jQuery
jQuery动画_动力节点节点Java学院整理
Jul 04 #jQuery
jQuery实现点击关注和取消功能
Jul 03 #jQuery
关于jQuery.ajax()的jsonp碰上post详解
Jul 02 #jQuery
jquery实现一个全局计时器(商城可用)
Jun 30 #jQuery
jQuery表单设置值的方法
Jun 30 #jQuery
jQuery开源组件BootstrapValidator使用详解
Jun 29 #jQuery
Vue.js列表渲染绑定jQuery插件的正确姿势
Jun 29 #jQuery
You might like
星际争霸中的热键
2020/03/04 星际争霸
html中select语句读取mysql表中内容
2006/10/09 PHP
PHP投票系统防刷票判断流程分析
2012/02/04 PHP
PHP 基于文件头的文件类型验证类函数
2012/05/01 PHP
php中文繁体和简体相互转换的方法
2015/03/21 PHP
分享PHP源码批量抓取远程网页图片并保存到本地的实现方法
2015/12/01 PHP
ajax调用返回php接口返回json数据的方法(必看篇)
2017/05/05 PHP
解决Laravel5.x的php artisan migrate数据库迁移创建操作报错SQLSTATE[42000]
2020/04/06 PHP
JavaScript自定义事件介绍
2013/08/29 Javascript
jQuery之过滤元素操作小结
2013/11/30 Javascript
JSONObject使用方法详解
2015/12/17 Javascript
jQuery Ajax页面局部加载方法汇总
2016/06/02 Javascript
很棒的Bootstrap选项卡切换效果
2016/07/01 Javascript
基于jQuery实现淡入淡出效果轮播图
2020/07/31 Javascript
js实现简单的计算器功能
2017/01/16 Javascript
jquery实现页面加载效果
2017/02/21 Javascript
jQuery选择器之子元素选择器详解
2017/09/18 jQuery
vue项目中jsonp跨域获取qq音乐首页推荐问题
2018/05/30 Javascript
解决v-for中使用v-if或者v-bind:class失效的问题
2018/09/25 Javascript
JS使用队列对数组排列,基数排序算法示例
2019/03/02 Javascript
在Vue中获取自定义属性方法:data-id的实例
2020/09/09 Javascript
JavaScript 实现轮播图特效的示例
2020/11/05 Javascript
python 文件与目录操作
2008/12/24 Python
深入Python函数编程的一些特性
2015/04/13 Python
python图像处理之镜像实现方法
2015/05/30 Python
简介Django中内置的一些中间件
2015/07/24 Python
python中异常报错处理方法汇总
2016/11/20 Python
通过源码分析Python中的切片赋值
2017/05/08 Python
Python爬虫获取整个站点中的所有外部链接代码示例
2017/12/26 Python
Python单元测试unittest的具体使用示例
2018/12/17 Python
Python如何把十进制数转换成ip地址
2020/05/25 Python
Python ConfigParser模块的使用示例
2020/10/12 Python
HTML5中判断横屏竖屏的方法(移动端)
2016/08/04 HTML / CSS
Tea Collection官网:一家位于旧金山的童装公司
2020/08/07 全球购物
Python Socket编程详解
2021/04/25 Python
Spring Data JPA框架持久化存储数据到数据库
2022/04/28 Java/Android