jQuery中的each方法实例

$.each()和$(selector).each()很相似,但是是不一样的。

前者可用于遍历一个数组或是json对象

而后者是专门用来遍历一个jQuery对象

先来说说$.each()吧,一般是这么用的

$.each(arr, function(i, v){
	// do something
})

其中arr也就是集合,也可以是json对象

而回调函数中的i则是数组的下标(在json中则是对应的key)

而v则是arr[i]的值(在json中则是对应的value)

下面来看一个简单的实例:

var json = {name:"zhu", age:10}
var arr = ['a','b','c','d']

$.each(arr, function(i, v){
	alert(i + ":" + v)
});
$.each(json, function(k, v){
	alert(k + ":" + v)
});

这样就完成了对数组和json的遍历。

当然了,如此遍历用原生的js也是可以轻松做到的

比如遍历上面的json或是arr,只需要:

for(var k in json){
	alert(k + ":" + arr[k])
}

看起来似乎还是js更简洁一些吧~性能上可能也要好一点

下面介绍$(selector).each(),这个方法在js中就不好找到替代品了。

其中$(selector)负责选中一组jQuery元素,而each函数负责遍历它

比如我们想对一组“li”改变其文字颜色

<style>
.red{
	color: red;
}
</style>
<ul>
	<li>Dog</li>
	<li>Cat</li>
	<li>Mouse</li>
</ul>
<input type="button" id="btn">
<script>
	$("#btn").click(function() {
		$("li").each(function() {
			$(this).toggleClass('red');
		});
	});
</script>

不过实际上,jQuery中存在隐式迭代的现象

每当我们调用选择器方法查找dom树里的元素时,其实就是把找到的dom元素存入一个jQuery对象里的dom数组中,然后再把这个jQuery对象返回。

而所谓隐式迭代也就是当我们调用jQuery方法时(如 toggleClass(..)),jQuery方法会遍历内部 dom数组,并调用每个dom元素的对应的dom属性或方法完成操作。

所有click中的函数并不需要使用each,直接$("li").toggleClass(‘red‘)也可以

在$(seletor).each(..)中,this被绑定到了当前遍历的DOM对象,如需获得jQuery对象$(this)就可以了

值得注意的是,还可以在遍历过程中提前退出遍历,只需要return false就可以了

时间: 2024-07-30 10:03:32

jQuery中的each方法实例的相关文章

jQuery中的$.grep()方法的使用

jQuery中的$.grep()方法的使用 转载▼ grep()方法用于数组元素过滤筛选 grep(array,callback,invert) array:待过滤数组; callback:处理数组中的每个元素,并过滤元素,该函数中包含两个参数,第一个是当前数组元素的值,一个是当前数组元素的下标,即元素索引值.此函数应返回一个布尔值.另外,此函数可设置为一个字符串,当设置为字符串时,将视为“lambda-form”(缩写形式?),其中 a 代表数组元素,i 代表元素索引值.如“a > 0”代表“

重新认识Jquery中的html()方法

今天测试给我提了一个bug:在页面上我需要借助"</td>"来获取表格中某行内的某列以后的单元格,也就是说里面有这样一行代码:"tr = tr.substring(tr.indexOf("</td>"));",这个JavaScript脚本在谷歌等浏览器中均可以达到预期效果,可是在IE8中就不行了,弄了一个多小时最后终于发现了问题,先看如下代码: <html> <head> <title>

jQuery 中的 unbind() 方法

jQuery 中的 unbind() 方法是 bind() 方法的反向操作,从每一个匹配的元素中删除绑定的事件. 语法结构: [javascript] view plain copy unbind([type][, data]); type是事件类型,data为将要移除的事件.具体说明如下: 1.如果没有参数,则删除所有的绑定事件: 2.如果提供了事件类型(type)作为参数,则只删除该类型的绑定事件: 3.如果把在绑定时传递的处理函数作为第2个参数,则只有这个特定的事件处理函数被删除.

jQuery中的join方法

和JS 中的JOIN 方法一样,将一数组按照JOIN的参数连接起来.比如: var arr = [ "a", "b", "c", "d", "e" ]; document.write(arr.join("-")); 结果:a-b-c-d-e. var members=["John","Steve","Ben","Dam

$.ajax()方法详解 jquery中的ajax方法

jquery中的ajax方法参数总是记不住,这里记录一下. 1.url: 要求为String类型的参数,(默认为当前页地址)发送请求的地址. 2.type: 要求为String类型的参数,请求方式(post或get)默认为get.注意其他http请求方法,例如put和delete也可以使用,但仅部分浏览器支持. 3.timeout: 要求为Number类型的参数,设置请求超时时间(毫秒).此设置将覆盖$.ajaxSetup()方法的全局设置. 4.async: 要求为Boolean类型的参数,默

jquery中的$.post()方法无法给变全局变量的问题

今天遇到一个问题,在使用jquery的$.post()方法时,没有办法返回布尔值. function check_exist() { var email = $('#email').val().Trim(); url = "/Account/Exist"; $.post(url, { email: email }, function (result) { if (result == "1") { $('#email_error').html("该邮箱已经被

jQuery中animate()的方法以及$(&quot;body&quot;).animate({&quot;scrollTop&quot;:top})不被Firefox支持问题的解决

jQuery中animate()的方法可以去w3school查看,这里主要说一下: $("body").animate({"scrollTop":top}) 不被Firefox支持问题的解决. 其实是使用body的: $("body").animate({"scrollTop":top}) 只被chrome支持,而不被Firefox支持. 而使用html的: $("html").animate({"

解决关于jquery中$.get()方法总是报“HierarchyRequestError: Node cannot be inserted at the specified point in the hierarchy”错的方法

解决关于jquery中$.get()方法总是报“HierarchyRequestError: Node cannot be inserted at the specified point in the hierarchy”错的方法 今天在看<jquery基础教程(第三版)>第十章的时候,运行随书下载的源码时总是不成功.起初以为书中自带的JS文件有错呢,但是测来测去也没发现哪里有问题.现在把源码附下: 1.这是书中带的HTML文件,其余的忽略不计,关键的就是下面这个a. <a id=&qu

jquery中的ajax方法参数了解

jquery中的ajax方法参数,常用参数如下: $.ajax({                 type: "get",                 url: 'http://xxx.xxx.com/xxx/xxx/xxx/personId',                 dataType: "json",                 data:{'id':personId},                 success: function(da