问答
1. Jquery 中, $(document).ready()是什么意思?和window.onload 的区别? 还有其他什么写法或者替代方法?
- $(document).ready()是当 DOM(文档对象模型) 已经加载,并且页面(包括图像)已经完全呈现时,会发生 ready 事件。
- 区别:
- 执行时机:
$(document).ready()只需要在页面中所有的DOM结构绘制完毕后就执行。
window.onload必须等网页中的所有内容加载完毕后(包括图片、CSS、脚本等),才能执行。 - 编写个数:
$(document).ready()能同时编写多个,根据编写顺序依次执行。
window.onload只能编写一个。如果编写多会也只会执行最后一个 window.onload代码。
- 执行时机:
- 简写方法:
$(document).ready()可以简写成:$().ready(function(){// body...})
或$(function(){// body...})
2. $node.html()和$node.text()的区别?
- $node.html()获取集合中第一个匹配元素的HTML内容或设置每一个匹配元素的HTML内容。当
()
没有参数时,获取集合中第一个匹配元素的HTML内容;当()
有参数时,设置node的HTML的内容。 - $node.text()得到匹配元素集合中每个元素的文本内容结合,包括他们的后代,或设置匹配元素集合中每个元素的文本内容为指定的文本内容。当
()
没有参数时,得到匹配元素集合中每个元素的合并文本,包括他们的后代。当()
有参数时,设置node的文本内容。
3. $.extend 的作用和用法?
作用:将两个或更多对象的内容合并到第一个对象。
写法:
jQuery.extend( [deep ], target, object1 [, objectN ] )
[deep]可选。类型: Boolean。如果是true,合并成为递归(又叫做深拷贝)。不能设置成false。
target对象扩展。将接收新的属性。可以写成{}。
object1合并到新的属性的第一个参数。
[,objectN]可选。合并到新的属性的第N个参数。
用法:
- 合并两个对象,并修改第一个对象。
- 采用递归的方式合并两个对象,并修改第一个对象。与上面的用法不同处在于如果目标对象的某个属性在附加对象中有,那么这个属性的值会发生合并。
- 合并 defaults 和 options 对象,并且不修改 defaults 对象。这是常用的插件开发模式。
4. JQuery 的链式调用是什么?
链式操作就是分步骤地对jQuery对象实现各种操作。
<pre>$(#test).css('color','blue').show(200).removeClass('style');</pre>
上面的一行代码,对id为test的对象进行了三项操作:先设置字体颜色为蓝色,再显示对象,最后移除对象的“style”。
上面 每一步的jQuery操作,返回的都是一个jQuery对象,所以不同的操作可以连接在一起。
优点:
- 代码更精简。链式操作能大大精简代码量,多项操作一行代码一气呵成,搞定;
- 优化性能。使用链式操作,所有操作代码共享一个jQuery对象,省去了逐步查询DOM元素的性能耗损。
5. JQuery ajax 中缓存怎样控制?
jQuery ajax方法中是利用cache参数来控制缓存,默认cache值为true(即缓存)。但在有些情况下我们是不需要ajax的默认缓存数据的,如时间等的实时发生变化的数据,这样我们可以通过设置cache为false,每次发送请求的数据上加上时间戳的方式,每次发送请求时都带上当时的时间参数,由于时间一直在变化,这样发生网络请求时,浏览器会认为这不是同一个页面,因此不会从缓存获取数据,而是重新发送请求获取数据。
6. jquery 中 data 函数的作用?
.data( key, value )
在匹配元素上存储任意相关的数据。
.data(key)
或者.data()
返回匹配的元素集合中的第一个元素的给定名称的数据存储的值。
<pre>
alert( $("body").data("foo")); //undefined,如果指定元素上没有设置任何值,那么将返回undefined。
$("body").data("bar", "foobar");
alert( $("body").data("bar")); //foobar
</pre>
本文版权归本人和饥人谷所有,转载请注明来源。