学习笔记: 方便日后查看
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>元素遍历</title>
<script src="../js/jquery-3.3.1.min.js" type="text/javascript" charset="utf-8"></script>
<script type="text/javascript">
$(function () {
/*
文档
1. js的遍历方式
* for(初始化值;循环结束条件;步长)
2. jq的遍历方式
1. jq对象.each(callback)
1. 语法:
jquery对象.each(function(index,element){
});
* index:就是元素在集合中的索引
* element:就是集合中的每一个元素对象
* this:集合中的每一个元素对象
2. 回调函数返回值:
* true:如果当前function返回为false,则结束循环(break)。
* false:如果当前function返回为true,则结束本次循环,继续下次循环(continue)
2. $.each(object, [callback])
3. for..of: jquery 3.0 版本之后提供的方式
for(元素对象 of 容器对象)
*/
//1.js对象的遍历方式
//js方式获取ul下的li元素(二选一)
//var citys = document.getElementsByTagName("li");//citys相当于存放li元素的数组
//jq方式获取ul下的li元素(二选一)
var citys = $("#city li");//citys相当于存放li元素的数组
//2.for循环遍历li
for (var i = 0; i < citys.length; i++) {
//获取内容
// alert(i+":"+citys[i].innerHTML);
/*
结果:
0:北京
1:上海
2:天津
3:重庆
*/
//小案例 如果我们想要如果内容等于天津的话就退出循环 该怎么做呢?
/*if (citys[i].innerHTML === "天津"){
break;//直接退出循环
// continue;//跳过天津,直接遍历下一个城市
}
alert(i+":"+citys[i].innerHTML);*/
}
//2.jq对象遍历方式
//2.1jq对象each遍历方式 : jq对象.each(callback)
//2.1.1获取li对象 第一种方式 this
/*citys.each(function () {
//alert(this.innerHTML);//这一种方式缺点:获得不到元素对应的索引了,只是弹出值
//jquery方法获取元素内容,jquery提供的方法比js多很多,所以最好就是用jquery的方式获取元素对象
//alert($(this).html());
})*/
//2.1.2获取li对象 第二种方式 在回调函数(function)中定义参数(index(索引) element(元素对象)) 推荐
citys.each(function (index,element) {//我们这两个参数名你可以自己定,这里只是为了明确意思,当然第一个参数就是表示索引的,第二个参数是表示元素对象
//这是js方式获取innerHTML.我们可以用jquery的方式获取看看
//alert(index+":"+element.innerHTML);
//jquery的方式获取
// alert(index+":"+$(element).html());//一样的结果,都是获取标签体内容
/*
结果:
0:北京
1:上海
2:天津
3:重庆
*/
//小案例 如果我们想要如果内容等于天津的话就退出循环 该怎么做呢?
/*if ($(element).html() === "天津"){
/!*如果当前function返回为false,则结束循环 相当于break
返回true,则结束本次循环 相当于continue*!/
// return false;
return true;
}
alert(index+":"+$(element).html());*/
})
//2.2jq对象全局each遍历方式 : $.each(object, [callback])
/*解释:
与上面一个each的区别:
多了一个object,上一个方法的each,调用者必须要是jq对象(即通过$()方式获取的),
而这个$.each方法,object可以是js的数组对象,也就是说即可以传递js对象,也可以是jq对象
当然了还有一些小区别,后续会更新
使用:和上一个each方法没有区别,直接复制下来都可以,这里我就复制小案例了
*/
/*$.each(citys,function (index,element) {
//小案例 如果我们想要如果内容等于天津的话就退出循环 该怎么做呢?
if ($(element).html() === "天津"){
// return false;//相当于for循环的break
return true;//相当于for循环的continue
}
alert(index+":"+$(element).html());
})*/
//2.3jq对象 for..of遍历方式: for(元素对象 of 容器对象) 注意:这是jquery 3.0 版本之后提供的方式
for (li of citys){
alert($(li).html());
/*
结果:
北京
上海
天津
重庆
*/
}
})
</script>
<style>
*{
background-color: darkgrey;
}
</style>
</head>
<body>
<ul id="city">
<li>北京</li>
<li>上海</li>
<li>天津</li>
<li>重庆</li>
</ul>
</body>
</html>