jQuery 是一个快速、简洁的 JavaScript 库,它简化了 HTML 文档遍历、事件处理、动画和 AJAX 交互等操作,在 jQuery 中,我们可以使用多种方法来实现循环,包括 .each()
、.map()
、.filter()
等,下面将详细介绍这些方法的使用。
1、.each()
方法
.each()
方法是 jQuery 中最常用、最简单的循环方法,它接受一个回调函数作为参数,该回调函数会在每个匹配的元素上执行一次,回调函数可以接受两个参数:第一个参数是当前元素的索引(从0开始),第二个参数是当前元素本身。
示例代码:
// 遍历所有段落元素,为它们添加一个类名 "highlight"
$("p").each(function(index, element) {
$(element).addClass("highlight");
});
2、.map()
方法
.map()
方法用于遍历数组或对象,并对每个元素执行指定的函数,然后将结果组成一个新的数组或对象返回,它接受一个回调函数作为参数,该回调函数可以接受三个参数:第一个参数是当前元素的索引(从0开始),第二个参数是当前元素本身,第三个参数是当前元素所属的数组或对象。
示例代码:
// 获取所有段落元素的文本内容,并将它们组成一个新的数组
var paragraphs = $("p").map(function(index, element) {
return $(element).text();
}).get();
console.log(paragraphs); // ["这是第一个段落", "这是第二个段落", "这是第三个段落"]
3、.filter()
方法
.filter()
方法用于筛选数组或对象中满足指定条件的元素,并返回一个新的数组或对象,它接受一个回调函数作为参数,该回调函数可以接受三个参数:第一个参数是当前元素的索引(从0开始),第二个参数是当前元素本身,第三个参数是当前元素所属的数组或对象。
示例代码:
// 筛选出所有包含文本 "这是" 的段落元素,并将它们组成一个新的数组
var filteredParagraphs = $("p").filter(function(index, element) {
return $(element).text().indexOf("这是") !== 1;
}).get();
console.log(filteredParagraphs); // ["这是第一个段落", "这是第二个段落"]
4、$.each()
方法
除了 .each()
方法外,jQuery 还提供了一个全局的 $.each()
方法,它可以用于遍历任何对象(如数组、对象等),它接受两个参数:第一个参数是要遍历的对象,第二个参数是一个回调函数,回调函数可以接受三个参数:第一个参数是当前元素的键名(对于数组来说是索引,对于对象来说是属性名),第二个参数是当前元素的值,第三个参数是当前元素所属的对象。
示例代码:
// 遍历一个数组,并为每个元素添加一个类名 "highlight"
$.each([1, 2, 3], function(index, value) {
$("").text(value).addClass("highlight").appendTo("body");
});
5、$.map()
方法
与 .map()
方法类似,jQuery 还提供了一个全局的 $.map()
方法,它可以用于遍历任何对象(如数组、对象等),它接受两个参数:第一个参数是要遍历的对象,第二个参数是一个回调函数,回调函数可以接受三个参数:第一个参数是当前元素的键名(对于数组来说是索引,对于对象来说是属性名),第二个参数是当前元素的值,第三个参数是当前元素所属的对象,与 .map()
方法不同的是,$.map()
方法会返回一个新的数组,而不会修改原始对象。
示例代码:
// 获取一个对象的键名和值组成的数组,并将它们组成一个新的二维数组
var obj = {a: 1, b: 2, c: 3};
var result = $.map(obj, function(value, key) {
return [key, value];
});
console.log(result); // [["a", 1], ["b", 2], ["c", 3]]
6、$.filter()
方法
与 .filter()
方法类似,jQuery 还提供了一个全局的 $.filter()
方法,它可以用于筛选任何对象(如数组、对象等)中满足指定条件的元素,它接受两个参数:第一个参数是要筛选的对象,第二个参数是一个回调函数,回调函数可以接受三个参数:第一个参数是当前元素的键名(对于数组来说是索引,对于对象来说是属性名),第二个参数是当前元素的值,第三个参数是当前元素所属的对象,与 .filter()
方法不同的是,$.filter()
方法会返回一个新的数组或对象,而不会修改原始对象。