前端开发jq的遍历方法

atom 前端开发必装插件
前端开发的所有插件
eclipse前端开发 插件及说明

1、children()方法
children(selector) 方法是返回匹配元素集合中每个元素的所有子元素(仅儿子辈,这里可以理解为就是父亲-儿子的关系)

理解节点查找关系:

<div class=”div”>
<ul class=”son”>
<li class=”grandson”>1</li>
</ul>
</div>
代码如果是$(“div”).find(),那么意味着只能找到ul,因为div与ul是父子关系,li与div是祖辈关系,因此无法找到。

children()无参数

允许我们通过在DOM树中对这些元素的直接子元素进行搜索,并且构造一个新的匹配元素的jquery对象

注意:jquery是一个合集对象,所以通过children是匹配合集中每一给元素的第一级子元素
.children()方法选择性地接受同一类型选择器表达式

$(“div”).children(“.selected”)
同样的也是因为jquery是合集对象,可能需要对这个合集对象进行一定的筛选,找出目标元素,所以允许传一个选择器的表达式

代码:

<!DOCTYPE html>
<html>
<head>
<script type=”text/javascript” src=”/jquery/jquery.js”></script>
<style>
body { font-size:16px; font-weight:bolder; }
p { margin:5px 0; }
</style>
</head>
<body>
<div>
<span>Hello</span>
<p class=”selected”>Hello Again</p>
<div class=”selected”>And Again</div>

<p>And One Last Time</p>

</div>
<script>$(“div”).children(“.selected”).css(“color”, “blue”);</script>
</body>
</html>

2、find()方法

children与find方法的区别,children是父子关系查找,find是后代关系(包含父子关系)

理解节点查找关系:

<div class=”div”>
<ul class=”son”>
<li class=”grandson”>1</li>
</ul>
</div>
代码如果是$(“div”).find(“li”),此时,li与div是祖辈关系,通过find方法就可以快速的查找到了。

.find()方法要注意的知识点:

find是遍历当前元素集合中每个元素的后代。只要符合,不管是儿子辈,孙子辈都可以。
与其他的树遍历方法不同,选择器表达式对于 .find() 是必需的参数。如果我们需要实现对所有后代元素的取回,可以传递通配选择器 ‘*’。
find只在后代中遍历,不包括自己。
选择器 context 是由 .find() 方法实现的;因此,$(‘li.item-ii’).find(‘li’) 等价于 $(‘li’, ‘li.item-ii’)。
注意重点:

.find()和.children()方法是相似的
1.children只查找第一级的子节点
2.find查找范围包括子节点的所有后代节点,find() 方法获得当前元素集合中每个元素的后代,通过选择器、jQuery 对象或元素来筛选。

<!DOCTYPE html>
<html>

<head>
<meta http-equiv=”Content-type” content=”text/html; charset=utf-8″ />
<title></title>
<link rel=”stylesheet” href=”imooc.css” type=”text/css”>
<style>
.left { width: auto; height: 200px; }
.left div { width: 150px; height: 70px; padding: 5px; margin: 5px; float: left; background: #bbffaa; border: 1px solid #ccc; }
span { color: blue; }
</style>
<script src=”http://lib.sinaapp.com/js/jquery/1.9.1/jquery-1.9.1.min.js”></script>
</head>

<body>
<h2>find方法()</h2>
<div class=”left first-div”>
<div class=”div”>
<ul class=”level-1″>
<li class=”item-1″>1</li>
<li class=”item-2″>2</li>
<li class=”item-3″>3</li>
</ul>
</div>
<div class=”div”>
<ul class=”level-2″>
<li class=”item-1″>1</li>
<li class=”item-2 test”>2</li>
<li class=”item-3″>3</li>
</ul>
</div>
<div class=”div”>
<ul class=”level-3″>
<li class=”item-1″>1</li>
<li class=”item-2″>2</li>
<li class=”item-3″>3</li>
</ul>
</div>
</div>
<button>点击:find传递表达式</button>
<br/>
<br/>
<h3>find表达式</h3>
<div style=”border:1px solid red;”>
<p>
<span>测试1</span>
<a>测试2</a>
</p>
<p>
<span>慕课网1</span>
<a>慕课网2</a>
</p>
<p>
<span>Aaron1</span>
<a>Aaron2</a>
</p>
</div>
<br/>
<br/>
<button>点击:find传递$对象</button>
<script type=”text/javascript”>
$(“button:first”).click(function() {
//?
})
</script>
<script type=”text/javascript”>
$(“button:last”).click(function() {
//找到所有p元素,然后筛选出子元素是span标签的节点
//改变其字体颜色
var $spans = $(‘span’);
$(“p”).find($spans).css(‘color’, ‘red’);
})
</script>
</body>
</html>

3、parent()方法

因为是父元素,这个方法只会向上查找一级

理解节点查找关系:

<div class=”div”>
<ul class=”son”>
<li class=”grandson”>1</li>
</ul>
</div>
查找ul的父元素div, $(ul).parent(),就是这样简单的表达

parent()无参数

parent()方法允许我们能够在DOM树中搜索到这些元素的父级元素,从有序的向上匹配元素,并根据匹配的元素创建一个新的 jQuery 对象

注意:jQuery是一个合集对象,所以通过parent是匹配合集中每一给元素的父元素
parent()方法选择性地接受同一型选择器表达式

同样的也是因为jQuery是合集对象,可能需要对这个合集对象进行一定的筛选,找出目标元素,所以允许传一个选择器的表达式

<!DOCTYPE html>
<html>
<head>
<script type=”text/javascript” src=”/jquery/jquery.js”></script>
</head>

<body>
<ul class=”level-1″>
<li class=”item-i”>I</li>
<li class=”item-ii”>II
<ul class=”level-2″>
<li class=”item-a”>A</li>
<li class=”item-b”>B
<ul class=”level-3″>
<li class=”item-1″>1</li>
<li class=”item-2″>2</li>
<li class=”item-3″>3</li>
</ul>
</li>
<li class=”item-c”>C</li>
</ul>
</li>
<li class=”item-iii”>III</li>
</ul>

<script>
$(‘li.item-a’).parent().css(‘background-color’, ‘red’);
</script>
</body>
</html>

4、parents()方法

parent只会查找一级,parents则会往上一直查到查找到祖先节点

理解节点查找关系:

<div class=”div”>
<ul class=”son”>
<li class=”grandson”>1</li>
</ul>
</div>
在li节点上找到祖 辈元素div, 这里可以用$(“li”).parents()方法

parents()无参数

parents()方法允许我们能够在DOM树中搜索到这些元素的祖先元素,从有序的向上匹配元素,并根据匹配的元素创建一个新的 jQuery 对象;

返回的元素秩序是从离他们最近的父级元素开始的

注意:jQuery是一个合集对象,所以通过parent是匹配合集中所有元素的祖辈元素
parents()方法选择性地接受同一型选择器表达式

同样的也是因为jQuery是合集对象,可能需要对这个合集对象进行一定的筛选,找出目标元素,所以允许传一个选择器的表达式
注意事项:

1 .parents()和.parent()方法是相似的,但后者只是进行了一个单级的DOM树查找
2 $( “html” ).parent()方法返回一个包含document的集合,而$( “html” ).parents()返回一个空集合。

<!DOCTYPE html>
<html>
<head>
<script type=”text/javascript” src=”/jquery/jquery.js”></script>
</head>

<body>
<ul class=”level-1″>
<li class=”item-i”>I</li>
<li class=”item-ii”>II
<ul class=”level-2″>
<li class=”item-a”>A</li>
<li class=”item-b”>B
<ul class=”level-3″>
<li class=”item-1″>1</li>
<li class=”item-2″>2</li>
<li class=”item-3″>3</li>
</ul>
</li>
<li class=”item-c”>C</li>
</ul>
</li>
<li class=”item-iii”>III</li>
</ul>

<script>
$(‘li.item-a’).parents().css(‘background-color’, ‘red’);
</script>
</body>
</html>

5、closest()方法

以选定的元素为中心,往内查找可以通过find、children方法。如果往上查找,也就是查找当前元素的父辈祖辈元素,jQuery提供了closest()方法,这个方法类似parents但是又有一些细微的区别,属于使用频率很高的方法

closest()方法接受一个匹配元素的选择器字符串

从元素本身开始,在DOM 树上逐级向上级元素匹配,并返回最先匹配的祖先元素

例如:在div元素中,往上查找所有的li元素,可以这样表达

$(“div”).closet(“li’)
注意:jQuery是一个合集对象,所以通过closest是匹配合集中每一给元素的祖先元素

closest()方法给定的jQuery集合或元素来过滤元素

同样的也是因为jQuery是合集对象,可能需要对这个合集对象进行一定的筛选,找出目标元素,所以允许传一个jQuery的对象

注意事项:在使用的时候需要特别注意下

粗看.parents()和.closest()是有点相似的,都是往上遍历祖辈元素,但是两者还是有区别的,否则就没有存在的意义了

起始位置不同:.closest开始于当前元素 .parents开始于父元素
遍历的目标不同:.closest要找到指定的目标,.parents遍历到文档根元素,closest向上查找,知道找到一个匹配就停止查找,parents一直查找到根元素,并将匹配的元素加入集合
结果不同:.closest返回的是包含零个或一个元素的jquery对象,parents返回的是包含零个或一个或多个元素的jquery对象

<!DOCTYPE html>
<html>
<head>
<script type=”text/javascript” src=”/jquery/jquery.js”></script>
</head>
<body>
<ul id=”one” class=”level-1″>
<li class=”item-i”>I</li>
<li id=”ii” class=”item-ii”>II
<ul class=”level-2″>
<li class=”item-a”>A</li>
<li class=”item-b”>B
<ul class=”level-3″>
<li class=”item-1″>1</li>
<li class=”item-2″>2</li>
<li class=”item-3″>3</li>
</ul>
</li>
<li class=”item-c”>C</li>
</ul>
</li>
<li class=”item-iii”>III</li>
</ul>
<script>
$(‘li.item-a’).closest(‘ul’).css(‘background-color’, ‘red’);
</script>
</body>
</html>

6、next()方法
如果想快速查找指定元素集合中每一个元素紧邻的后面同辈元素的元素集合,此时可以用next()方法

理解节点查找关系:

如下class=”item-1″元素就是红色部分,那蓝色的class=”tem-2″就是它的兄弟元素

<ul class=”level-3″>
<li class=”item-1″>1</li>
<li class=”item-2″>2</li>
<li class=”item-3″>3</li>
</ul>
next()无参数

允许我们找遍元素集合中紧跟着这些元素的直接兄弟元素,并根据匹配的元素创建一个新的 jQuery 对象。

注意:jQuery是一个合集对象,所以通过next是匹配合集中每一给元素的下一个兄弟元素
next()方法选择性地接受同一类型选择器表达式

同样的也是因为jQuery是合集对象,可能需要对这个合集对象进行一定的筛选,找出目标元素,所以允许传一个选择器的表达式

<!DOCTYPE html>
<html>
<head>
<script type=”text/javascript” src=”/jquery/jquery.js”></script>
</head>

<body>
<ul>
<li>list item 1</li>
<li>list item 2</li>
<li class=”third-item”>list item 3</li>
<li>list item 4</li>
<li>list item 5</li>
</ul>

<script>
$(‘li.third-item’).next().css(‘background-color’, ‘red’);
</script>
</body>
</html>

7、prev()方法

如果想快速查找指定元素集合中每一个元素紧邻的前面同辈元素的元素集合,此时可以用prev()方法

理解节点查找关系:

如下蓝色的class=”tem-2″的li元素,红色的节点就是它的prev兄弟节点

<ul class=”level-3″>
<li class=”item-1″>1</li>
<li class=”item-2″>2</li>
<li class=”item-3″>3</li>
</ul>
prev()无参数

取得一个包含匹配的元素集合中每一个元素紧邻的前一个同辈元素的元素集合

注意:jQuery是一个合集对象,所以通过prev是匹配合集中每一个元素的上一个兄弟元素
prev()方法选择性地接受同一类型选择器表达式

同样的也是因为jQuery是合集对象,可能需要对这个合集对象进行一定的筛选,找出目标元素,所以允许传一个选择器的表达式

<!DOCTYPE html>
<html>
<head>
<meta http-equiv=”Content-type” content=”text/html; charset=utf-8″ />
<title></title>
<link rel=”stylesheet” href=”imooc.css” type=”text/css”>
<style>
.left { width: auto; height: 150px; }
.left div { width: 150px; height: 100px; padding: 5px; margin: 5px; float: left; background: #bbffaa; border: 1px solid #ccc;}
a { display: block; }
</style>
<script src=”http://libs.baidu.com/jquery/1.9.1/jquery.js”></script&gt;
</head>

<body>
<h2>prev方法()</h2>
<div class=”left first-div”>
<div class=”div”>
<ul class=”level-1″>
<li class=”item-1″>1</li>
<li class=”item-2″>2</li>
<li class=”item-3″>3</li>
</ul>
</div>
<div class=”div”>
<ul class=”level-2″>
<li class=”item-1″>1</li>
<li class=”item-2″>2</li>
<li class=”item-3″>3</li>
</ul>
</div>
<div class=”div”>
<ul class=”level-3″>
<li class=”item-1″>1</li>
<li class=”item-2″>2</li>
<li class=”item-3″>3</li>
</ul>
</div>
</div>
<button>点击:prev无参数</button>
<button>点击:prev传递选择器</button>
<script type=”text/javascript”>
$(“button:first”).click(function() {
//?
})
</script>

<script type="text/javascript">
$("button:last").click(function() {
    //找到所有class=item-2的li
    //然后给每个li,然后筛选出第一个,加上蓝色的边
   $('.item-3').prev(':last').css('border', '1px solid blue')
})
</script>

</body>
</html>

8、siblings()

如果想快速查找指定元集合中每一个元素紧邻的前面后面同辈元素,此时可以用siblings()方法

理解节点查找关系:

如下蓝色的class=”tem-2″的li元素,红色的节点就是它的siblings兄弟节点

<ul class=”level-3″>
<li class=”item-1″>1</li>
<li class=”item-2″>2</li>
<li class=”item-3″>3</li>
</ul>
siblings()无参数

取得一个包含匹配的元素集合中每一个元素紧邻的前后同辈元素的元素集合

注意:jQuery是一个合集对象,所以通过siblings是匹配合集中每一个元素的前后兄弟元素
siblings()方法选择性地接受同一类型选择器表达式

同样的也是因为jQuery是合集对象,可能需要对这个合集对象进行一定的筛选,找出目标元素,所以允许传一个选择器的表达式

<!DOCTYPE html>
<html>
<head>
<script type=”text/javascript” src=”/jquery/jquery.js”></script>
</head>
<body>
<ul>
<li>list item 1</li>
<li>list item 2</li>
<li class=”third-item”>list item 3</li>
<li>list item 4</li>
<li>list item 5</li>
</ul>

<script>
$(‘li.third-item’).siblings().css(‘background-color’, ‘red’);
</script>
</body>
</html>

9、add()方法

通过$()方法找到指定的元素合集后可以进行一系列的操作。$()之后就意味着这个合集对象已经是确定的,如果后期需要再往这个合集中添加一新的元素要如何处理?jQuery为此提供add方法,用来创建一个新的jQuery对象 ,元素添加到匹配的元素集合中

.add()的参数可以几乎接受任何的$(),包括一个jQuery选择器表达式,DOM元素,或HTML片段引用。

简单的看一个案例:

操作:选择所有的li元素,之后需要把p元素也加入到li的合集中

<ul>
<li>list item 1</li>
<li>list item 3</li>
</ul>
<p>新的p元素</p>
处理一:传递选择器

$(‘li’).add(‘p’)
处理二:传递dom元素

$(‘li’).add(document.getElementsByTagName(‘p’)[0])
还有一种方式,就是动态创建P标签加入到合集,然后插入到指定的位置,但是这样就改变元素的本身的排列了

$(‘li’).add(‘<p>新的p元素</p>’).appendTo(目标位置)

<!DOCTYPE html>
<html>
<head>
<meta http-equiv=”Content-type” content=”text/html; charset=utf-8″ />
<title></title>
<style>
.left { width: auto; height: 150px; }
.left div { width: 150px; height: 120px; padding: 5px; margin: 5px; float: left; background: #bbffaa; border: 1px solid #ccc; }
</style>
<script src=”http://libs.baidu.com/jquery/1.9.1/jquery.js”></script&gt;
</head>

<body>
<h2>add方法()</h2>
<div class=”left first-div”>
<div class=”div”>
<ul>
<li>list item 1</li>
<li>list item 2</li>
<li>list item 3</li>
</ul>
<p>新的p元素</p>
</div>
</div>
<div class=”right”></div>
<br/>
<button>点击:add传递元素标签</button>
<button>点击:add传递html结构</button>
<script type=”text/javascript”>
$(“button:first”).click(function() {
//把p元素加到li合集中
$(‘li’).add(‘p’).css(‘background’, ‘red’)
})
</script>
<script type=”text/javascript”>
$(“button:last”).click(function() {
//把html结构'<p>新的p元素</p>’
//加入到li的合集中,为了能够在页面上显示
//需要在重新appendTo要指定的节点处
//值得注意:整个结构位置都改变了
$(‘li’).add(‘<p>新的p元素</p>’).appendTo($(‘.right’))
})
</script>
</body>
</html>

10、each()

通过$()方法找到指定的元素合集后可以进行一系列的操作。比如我们操作$(“li”).css(”) 给所有的li设置style值,因为jQuery是一个合集对象,所以css方法内部就必须封装一个遍历的方法,被称为隐式迭代的过程。要一个一个给合集中每一个li设置颜色,这里方法就是each

.each() 方法就是一个for循环的迭代器,它会迭代jQuery对象合集中的每一个DOM元素。每次回调函数执行时,会传递当前循环次数作为参数(从0开始计数

所以大体上了解3个重点:

each是一个for循环的包装迭代器
each通过回调的方式处理,并且会有2个固定的实参,索引与元素
each回调方法中的this指向当前迭代的dom元素
看一个简单的案例

<ul>
<li>慕课网</li>
<li>Aaron</li>
</ul>
开始迭代li,循环2次

$(“li”).each(function(index, element) {
index 索引 0,1
element是对应的li节点 li,li
this 指向的是li
})
这样可以在循环体会做一些逻辑操作了,如果需要提前退出,可以以通过返回 false以便在回调函数内中止循

<html>
    <head>
        <script type=”text/javascript” src=”/jquery/jquery.js”></script>
        <script type=”text/javascript”>
            $(document).ready(function() {
                $(‘button’).click(function() {
                    $(‘li’).each(function() {
                        alert($(this).text())
                    })
                })
            })
        </script>
    </head>
    <body>
        <button>输出每个列表项的值</button>
        <ul>
            <li>Coffee</li>
            <li>Milk</li>
            <li>Soda</li>
        </ul>
    </body>
</html>
前端 chrome 开发插件
前端开发调用本地摄像头的插件
谷歌 开发插件 前端

 

» 本文来自:前端开发者 » 《前端开发jq的遍历方法》
» 本文链接地址:https://www.rokub.com/6358.html
» 您也可以订阅本站:https://www.rokub.com
赞(0)
64K

评论 抢沙发

评论前必须登录!