day17
1-jquery 中的$.each 和$(选择器).each()有什么区别?
$().each()多用于遍历dome的html标签;
如果页面有多个input标签类型为checkbox,对于这时用$().each来处理多个checkbook.
1 $("input[type='checkbox']").each(function(i){ 2 if($(this).is(':checked') == true){ 3 console.log($(this).attr("name")); 4 } 5 });
$.each()多用于遍历数组对象。
1 $.each([{"name":"limeng","email":"xfjylimeng"},{"name":"hehe","email":"xfjylimeng"}], function(i,n){ 2 console.log("索引:"+ i +",对应值为:"+ n.name); 3 });
2-query 中的$.each 和 js 中的 foeEach()有什么区别?
回调函数中参数的位置不一样,forEach中为第一个参数为ele,第二个为index。each中第一个为index,第二个为ele;
回调函数中是否有返回值,forEach中没有返回值,each有返回值,返回被遍历的数组
forEach不能遍历对象,可以使用for in;
而each可以通过jq的讲台方法来遍历,即$.each(obj,function(key,value){})
3- window.onload 和$(docuMent).ready() 有什么区别?
1.执行时间不同
window.onload必须等到页面内的所有元素()加载完毕后才能执行。
$(document).ready()是页面DOM结构绘制完毕后就执行,不必等到加载完毕
2.执行次数不同
window.onload不能同时执行多个,如果同一个页面上面有多个window.onload方法(包括关联js文件中),只会执行最后一个window.onload,也就是向上覆盖。
$(document).ready()可以同时执行多个,如果同一个页面上有多个$(document).ready()方法(包括关联js文件中),JQuery能够很好地处理这些情况,每次调用$(document).ready()方法都会在现有的行为上追加新的行为,这些行为函数会根据注册的顺序依次执行。
3.简化写法不同
window.onload没有简化写法。
$(document).ready()有两种简化写法:$().ready(function)、$(function)。
4-jquery 实现链式编程的原理是什么?
实现链式编程的核心,是对象中的每一个方法都会返回当前对象。
var 对象 = {
方法名:function(){
// …
return this; // 实现链式编程的核心this
}
}
在方法中,js提供一个this的关键字,表示当前对象。