each()
为每个匹配元素规定要运行的函数,返回 false 可用于及早停止循环。
$("button").click(function(){
$("li").each(function(){
alert($(this).text())
});
}); 输出每个 <li> 元素的文本
map()
用于使用指定函数处理数组中的每个元素(或对象的每个属性),并将处理结果封装为新的数组返回。
注:
- 在jQuery 1.6 之前,该函数只支持遍历数组;从 1.6 开始,该函数也支持遍历对象。
- map()还会为函数传入两个参数:其一是当前迭代的元素或属性值,其二是当前迭代项的数组索引或对象属性名。
- 该函数返回值将作为结果数组中的一个元素,如果返回值为null或undefined,则不会被添加到结果数组中。
$('div').map(function(i, ele){
return this.id;
});
extend()
用于将一个或多个对象的内容合并到目标对象。
- 如果只为$.extend()指定了一个参数,则意味着参数target被省略。此时,target就是jQuery对象本身。通过这种方式,我们可以为全局对象jQuery添加新的函数。
- 如果多个对象具有相同的属性,则后者会覆盖前者的属性值。
<div id="log"></div>
<script>
$(function () {
var object1 = {
apple: 0,
banana: {weight: 52, price: 100},
cherry: 97
};
var object2 = {
banana: {price: 200},
durian: 100
};
/* object2 合并到 object1 中 */
$.extend(object1, object2);
var printObj = typeof JSON != "undefined" ? JSON.stringify : function(obj) {
var arr = [];
$.each(obj, function(key, val) {
var next = key + ": ";
next += $.isPlainObject(val) ? printObj(val) : val;
arr.push( next );
});
return "{ " + arr.join(", ") + " }";
};
$("#log").append( printObj(object1) );
})
</script> 遍历数组元素,并修改第一个对象
clone()
生成被选元素的副本,包含子节点、文本和属性。
$("button").click(function(){
$("p").clone().appendTo("body");
}); 克隆所有的 <p> 元素,并插入到 <body> 元素的结尾
index()
返回指定元素相对于其他指定元素的 index 位置。
- 没参数返回第一个元素index
- 如果参数是DOM对象或者jQuery对象,则返回参数在集合中的index
- 如果参数是选择器,返回第一个匹配元素index,没有找到返回-1
$("li").click(function(){
alert($(this).index());
}); 获得被点击的 <li> 元素相对于它的同级元素的 index
ready()
当 DOM(document object model 文档对象模型)加载完毕且页面完全加载(包括图像)时发生 ready 事件。由于该事件在文档就绪后发生,因此把所有其他的 jQuery 事件和函数置于该事件中是非常好的做法。如上面的实例所示。ready() 方法规定当 ready 事件发生时执行的代码。
$(document).ready(function(){
$("button").click(function(){
$("p").slideToggle();
});
}); 使用 ready() 来使函数在文档加载后是可用的