同样的代码,在”严格模式”中,可能会有不一样的运行结果;一些在”正常模式”下可以运行的语句,在”严格模式”下将不能运行。
77.解释”chaining”。jQuery方法链接。直到现在,我们都是一次写一条jQuery语句(一条接着另一条)。不过,有一种名为链接(chaining)的技术,允许我们在相同的元素上运行多条jQuery命令,一条接着另一条。
提示:这样的话,浏览器就不必多次查找相同的元素。
如需链接一个动作,您只需简单地把该动作追加到之前的动作上。
78.解释”deferreds”。开发网站的过程中,我们经常遇到某些耗时很长的javascript操作。其中,既有异步的操作(比如ajax读取服务器数据),也有同步的操作(比如遍历一个大型数组),它们都不是立即能得到结果的。
通常的做法是,为它们指定回调函数(callback)。即事先规定,一旦它们运行结束,应该调用哪些函数。
但是,在回调函数方面,jQuery的功能非常弱。为了改变这一点,jQuery开发团队就设计了deferred对象。
简单说,deferred对象就是jQuery的回调函数解决方案。在英语中,defer的意思是”延迟”,所以deferred对象的含义就是”延迟”到未来某个点再执行。
79.你知道哪些针对jQuery的优化方法?
1.总是从ID选择器开始继承在jQuery中最快的选择器是ID选择器,因为它直接来自于JavaScript的getElementById()方法。
例如有一段HTML代码:
<div id="content">
<form method="post"action="#">
<h2>交通信号灯</h2>
<ul id="traffic_light">
<li>
<input type="radio"class="on"name="light"value="red"/>红色
</li>
<li>
<input type="radio"class="off"name="light"value="yellow"/>黄色
</li>
<li>
<input type="radio"class="off"name="light"value="green"/>绿色
</li>
</ul>
<input class="button"id="traffic_button"type="submit"value="Go"/>
</form>
</div>
比如需要选择红绿单选框,那么可以使用一个tag name来限制(修饰)class,如下所示:var active_light=(“input.on”);当然也可以结合就近的ID,如下所示:varactivelight=(“input.on”);当然也可以结合就近的ID,如下所示:varactivelight=(“#traffic_light input.on”); 如果采用下面的选择器,那么效率是低效的。var traffic_button=(“#content.button”);因为button已经有ID了,我们可以直接使用ID选择器。如下所示:var traffic_button=(“#content.button”);因为button已经有ID了,我们可以直接使用ID选择器。如下所示:var traffic_button=(“#traffic_button”);当然这只是对于单一的元素来讲。如果你需要选择多个元素,这必然会涉及到DOM遍历和循环,为了提高性能,建议从最近的ID开始继承。如下所示:var traffic_lights=$(“#traffic_light input”);
2.在class前使用tag(标签名)在jQuery中第二快的选择器是tag(标签)选择器(比如:$(“head”))。
跟ID选择器累时,因为它来自原生的getElementsByTagName()方法。继续看刚才那段HTML代码: