JQ面试常见问题
最近把《锋利的jquery》重新看了一遍,结合自己平时总结,汇总一下面试常见问题。
1. window.onload=fn 和$(document).ready( fn )的区别

2. 使用JQ的优势
(1) 强大的选择器出色的dom封装(简化并丰富了原生DOM)。
(2) 丰富的选择器。
(3) 链式操作。
(4) 完善的ajax(再也不用写那四步了).。
(5) 出色的浏览器兼容性IE6.0+、 FF2.0+ 、safari2.0+ 、Opeara9.0+(对兼容性做了很好的处理)。
(6) 隐式迭代无需大量循环。
(7) 可靠地时间处理机制预留退路、循环渐进、非入侵式编程思想。
(8) 不污染顶级变量(封装为jq对象)。
(9) 其他:轻量级(其实也不算轻量级),行为与结构分离,丰富插件支持,完善的文档,开源。
3. JQ和DOM转换
a. JQ是一个数组对象转换时可以get(index) 或者选择[index]。
b. DOM转JQ直接$(dom对象)。
4.怎么解决JQ与其他库的冲突
情况一:JQ在其它库之后导入
方式一 jQuery.noConflict()来将变量$的控制权移交给其他js库
<script src="jq.min.js" ></script>
<script src ="jquery.js"></script>
<script>
jQuery.noConflict();//移交$的控制权
jQuery().click(fn)</script>
方式二 使用别名
<script src="jquery.js"></script>
<script src = "common.js"><script>
<script>
var jq = jQuery.noConflict();//别名
jq().click(fn)
</script>
方式三 自定义一个快捷方式
如果不想给JQ自定义这些备用的名称,还想使用$而不管其他库的$()方法,同时又不想跟其他库相冲突的话。
(1) 引入jQuery.noConflict()
(2) 将$换成jQuery
(3) (function($){
$().show();
})(jQuery);
情况二:JQ在其它库之前导入
将$换成jQuery即可,无需使用jQuery.noConflict()。
5. jQuery 1-2版本和3+版本的动画本质有什么区别,说说前端使用的动画技术
(1) CSS Transition
(2) CSS Keyframes
(3) 定时器动画(setTimeout) —— jQuery1/2
(4)requestAnimationFrame动画 —— jQuery3+
未完待续...