1 乱用选择器

坑人指数:200

JQuery选择器调用代价很大,反复调用效率更低。应采用缓存对象的方法或采用链式调用的方式。

//错误的写法
$("#button").click(function(){
$('#list li').addClass('strong');
$('#list li').css('color', 'red');
});
//正确的写法
$("#button").click(function(){
$lis = $('#list li');
$lis.addClass('strong');
$lis.css('color', 'red');
});
//更好的写法
$("#button").click(function(){
$('#list li').addClass('strong').css('color', 'red');
});

2 全局选择效率低

坑人指数:100

尽量使用上下文(context)查找,避免全局选择的使用。全局选择器会进行整个Doc的查找,效率很低。

//错误的写法
$(".active").method();
//正确的写法
var ul = $("#myList");
$(".active",ul).method();

3 复制匿名函数

坑人指数:50

避免多次复制匿名函数的写法,将匿名函数分离出来,供其它对象多次调用。

//错误的写法
$('#myDiv').click( function(){
//一些操作
});
//正确的写法
function divClickFn(){
//一些操作
}
$('#myDiv').click(function(){
divClickFn();
});

4 误用ajax的complete

坑人指数:30

当用ajax进行数据请求时,避免使用complete回调方法,而应该使用success方法。complete回调在请求成功或失败都会触发。

//错误的写法
$.ajax({
url: "http://tools.42du.cn/jsonp/student/all",
}).complete(function( data ) {
//一些操作
});
//正确的写法
$.ajax({
url: "http://tools.42du.cn/jsonp/student/all",
}).success(function( data ) {
//一些操作
});

5 链式调用的误用

坑人指数:20

采用链式调用的方式会使对象在渐变未完成之前就被移除,即remove方法会在fadeOut方法完成之前调用。当需要第一方法完成之后,再执行第二个方法,请使用回调,即第二种方式。

//错误的写法
$("#myDiv").click(function(e) {
$(this).fadeOut("slow").remove();
});
//正确的写法
$("myDiv").click(function(e){
$(this).fadeOut("slow", function(){
$(this).remove();
});
});

6 事件多次绑定

坑人指数:20

如果你绑定(bind)同一事件多次,响应就会被执行多次。为避免多次执行,请先做事件解绑再重新绑定。

//避免响应多次执行
$("myDiv").unbind("click").bind("click");

7 错误使用this指示符

坑人指数:10

this指示符存在于一定的上下文中的,当上下文变化时this指向不同的对象。如果还想调用原上下文中的this,则需要在原上下文中缓存原this对象($that = $(this))。

//错误的写法
$( "#myList").click( function() {
$(this).method();
$("#myList li").each( function() {
//this并不指向myList
$(this).method2();
})
});

最新文章

  1. echarts之toolbox-orient
  2. JDBC使用事务实例
  3. thinkphp基于角色的权限控制详解
  4. 获取View到顶部的高度
  5. 网络编程3--毕向东java基础教程视频学习笔记
  6. 【HDU 4747 Mex】线段数
  7. Python学习(5)——内置函数
  8. 使用mysql触发器脚本,解决流水数据的添加。
  9. 转:JS日期加减,日期运算
  10. 解读eXtremeComponents代码结构--转载
  11. 14.7.2 Changing the Number or Size of InnoDB Redo Log Files 改变InnoDB Redo Log Files的数量和大小
  12. wpf Content数据绑定StringFormat起作用的原理和解决(转)
  13. SignalR系列教程:SignalR快速入门
  14. C#6.0 中的那些新特性
  15. 开学&东大一周游记
  16. SQL Server 2008中的CDC(Change Data Capture)功能使用及释疑
  17. yield与递归的组合运用
  18. linux memcached开机启动
  19. Python3基础 dict 推导式 生成10以内+奇数的值为True 偶数为False的字典
  20. POJ 2186 强联通分量

热门文章

  1. [nodejs] 同步/异步创建多层目录
  2. 【FishFX】花式撩骚,打造TypeScript易用框架。
  3. Jmeter:运行报:Error occurred starting thread group :线程组, error message:Invalid duration 0 set in Thread Group:线程组, see log file for more details
  4. Apache Rewrite实现URL的跳转和域名跳转
  5. 模糊c-means算法的c++实现
  6. 【Linux常见命令】vi,vim命令
  7. 蘑菇街CEO陈琪上市致辞:科技是生产力 美丽也是生产力
  8. 关于:Express会被Koa2取代吗?
  9. GCRoots
  10. JavaWeb----Servler