Fork me on GitHub

jQuery(1)

图片描述

jQuery框架中$.ajax()的常用参数有哪些?写一个post请求并带有发送数据和返回数据的样例。

  • async:是否异步
  • url:请求地址
  • contentType:发送信息至服务器时内容编码类型
  • data:发送到服务器的数据
  • dataType:预期服务器返回的数据类型
  • type:请求类型
  • success:请求成功回调函数
  • error:请求失败回调函数
1
2
3
4
5
6
7
8
9
10
$.ajax({
url:'...',
type:'post',
data:{
id:1
},
success:function(data){
alert(data);
}
})

jQuery一个对象可以同时绑定多个事件,如何实现的?

多个事件同一个函数

$('#div').on('click mouseover',function(){});

多个事件不同函数

1
2
3
4
5
6
7
8
$('#div').on({
click:function(){
...
},
mouseover:function(){
...
}
})

jQuery的slideUp动画,如果目标元素是被外部事件驱动,当鼠标快速地连续触发外部事件元素,动画会滞后的反复执行,该如何处理?

jQuery.stop();

如:$('#div').stop().animate({width:'100px',100});

jQuery停止动画事件:

1
2
3
4
5
6
7
$("#div").stop();//停止当前动画,继续下一个动画
$("#div").stop(true);//清除元素的所有动画
$("#div").stop(false, true);//让当前动画直接到达末状态 ,继续下一个动画
$("#div").stop(true, true);//清除元素的所有动画,让当前动画直接到达末状态

jquery.extend与jquery.fn.extend的区别?

jquery.extendjquery类添加类方法,可以理解为静态方法

jquery.fn.extend在源码中jquery.fn==jquery.prototype,所以对jquery.fn的扩展,就是为jquery类添加成员函数

使用:jquery.extend扩展,需要通过jquery类来调用,而jquery.fn.extend扩展,所有jquery实例都可以直接调用。

jquery与jquery UI有啥区别?

jquery是一个js库,主要提供的功能是选择器,属性修改和事件绑定等。

jquery UI则是在jquery的基础上,利用jquery的扩展性,设计的插件。提供了一些常用的界面元素,诸如对话框、拖动行为、改变大小行为等等。

jquery中如何将数组转换为json字符串,然后再转换回来?

jquery中没有提供这个功能,所以你需要先编写两个jquery的扩展:

1
2
3
4
5
6
$.fn.stringifyArray = function(array){
return JSON.stringify(array)
}
$.fn.parseArray = function(array){
return JSON.parse(array)
}

然后调用:

$("").stringifyArray(array)

针对jquery的优化方法?

  • 基于class的选择器的性能相对于id选择器开销很大,因为需要遍历所有的DOM元素。优先使用ID选择器。

  • 频繁的DOM操作,先缓存起来再操作。用jquery的链式调用更好。

如:var str = $("a").attr("href");

  • for循环每一次都查找了数组arr的length属性,在开始循环的时候设置一个变量来存储这个数字,可以让循环跑的更快。

for (var i = size, length = arr.length; i < length; i++) {}

jquery.fn的init方法返回的this指的是什么对象?为什么要返回this?

this执行init构造函数自身,其实就是jquery实例对象,返回this是为了实现jquery的链式操作。