沉沙
2018-06-22
来源 :
阅读 2461
评论 0
摘要:本篇教程讲解了额7个大家应该避免的jQuery坑,希望阅读本篇文章以后大家有所收获,帮助大家对jQuery的理解更加深入。
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( divClickFn );4 误用ajax的complete
坑人指数:30
当用ajax进行数据请求时,避免使用complete回调方法,而应该使用success方法。complete回调在请求成功或失败都会触发。
//错误的写法
$.ajax({
url: "//tools.42du.cn/jsonp/student/all",
}).complete(function( data ) {
//一些操作
});
//正确的写法
$.ajax({
url: "//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();
})
});
本文由职坐标整理发布,更多相关内容,请关注职坐标WEB前端jQuery频道!
喜欢 | 1
不喜欢 | 0
您输入的评论内容中包含违禁敏感词
我知道了

请输入正确的手机号码
请输入正确的验证码
您今天的短信下发次数太多了,明天再试试吧!
我们会在第一时间安排职业规划师联系您!
您也可以联系我们的职业规划师咨询:
版权所有 职坐标-一站式AI+学习就业服务平台 沪ICP备13042190号-4
上海海同信息科技有限公司 Copyright ©2015 www.zhizuobiao.com,All Rights Reserved.
沪公网安备 31011502005948号