1、在jQuery 中, $(document).ready()
是什么意思?和window.onload
的区别? 还有其他什么写法或者替代方法?
因为浏览器从上至下解析页面,假若将<script>
写在<head>
中,而页面解析时间过长,可能会出现事件关联的DOM节点并未加载出而却在<script>中进行了事件绑定的bug。使用$(document).ready()
,让函数内执行的进程等带所有DOM加载完毕后在生效。
其与window.onload
的不同主要体现在:
-
$(document).ready()
是在DOM树建立后生效,而window.onload
不仅要建立DOM树,还要等待DOM数中的内容加载完成(如:图片,动画等等); -
window.onload
只能规定一次,若多次规定,则只有最后一个生效;而$(document).ready()
可规定多个。
其它写法:
$(function(){
console.log("方法一");
})
$(document(){
console.log("方法二");
})
$().ready(function{
console.log("方法三");
})
2、$node.html()
和$node.text()
的区别?
-
$node.html()
是获取/修改$node节点中的html内容; -
$node.text()
是获取/修改$node节点中的文本内容;
3、$.extend
的作用和用法?
-
$.extend(obj1,obj2,[obj3]......)
的作用是将一个或多个对象整合到一个已经存在的对象之中; - 前两个参数必须传入,后面3-n个参数可以选择传入 。
例如:
var student1 = {"name":"张全蛋","age":18}
var student2 = {"name":"王尼玛","age":20,"gender":"男"}
var student3 = {"name":"狗子","age":24,"hobby":"足球"}
$.extend(student1,student2,student3); //Object {name: "狗子", age: 24, gender: "男", hobby: "足球"}
student1 //Object {name: "狗子", age: 24, gender: "男", hobby: "足球"}
//此时student1也变为新的对象
4、什么是jQuery的链式调用?
形如$(node).dosomething().dosomething()的形式即为链式调用;其原理是每次执行一次操作后,所得到的返回值依然是原来的jQuery对象,故可以继续作用;我们在书写的时候,为了简洁美观一般是这样:
$(node).dosomething()
.dosomething();
5、 JQuery Ajax 中缓存怎样控制?
首先解释什么是缓存:简单来说,缓存就是客户端对上一次服务端响应所留下的副本,如果下一次请求与上一次的URL相同,那么客户端不会再向服务端发送请求,而直接调用缓存来呈现给用户。
在JQuery的AJAX中,通过设置ajax对象内部的cache
属性来控制是否保存缓存:
cache
的值为布尔数,默认值为true
,意为保存缓存,反之则为false
,其不保存缓存的原理是将每次请求的URL地址后添加一个时间戳,以区分每次请求的URL。
6、jquery 中 data 的作用
.data() 方法允许我们在DOM元素上绑定任意类型的数据,避免了循环引用的内存泄漏风险。
用法为:$(selector).data(key,value)