关于jquery中callback函数的使用

今天在做一个网站开发的过程中遇到了一个小问题,解决之后,发现这应该是很多学习jquery的新手朋友们会遇到的问题,故在这里记录一下。

基本需求和实现要点:这是一个购物网站,在用户点击“收藏店铺”或者“收藏商品”之后,用ajax把数据传递给后台进行处理,后台返回一个值给html,再由html根据返回的值,在页面上用一个模态框显示信息,随后模态框淡出。

在这里,为了简化问题,我们暂时不谈后台的处理。

似乎看上去,对模态框,用一个fadeout方法来处理就可以了,但是事实上,用户可能会进行连续多次的点击收藏,此时模态框就不一定能正确显示和淡出了。为此,我们自然而然的得到另外一种方案,就是在模态框淡出之后,删除该模态框元素,待下次再点击,再创建这个元素。

于是顺着这个思路,我犯了一个错误。

我在jquery中写了这么三句代码

1

2

3

$(document.body).append('<div id="top_alert">'+text+'</div>');

$('#top_alert').fadeOut(3000); 

$('#top_alert').remove();

按照往常编程的逻辑思维,元素fadeOut之后,被删除。而事实上,按照上面的写法,我们是看不到fadeOut的效果的,因为在我们还没看到效果,下面的remove已经起作用了,即元素已经被删除。

这里就是我们新手经常会犯的错误之一。

事实上,jquery给我们提供了callback函数这种机制,就是用来解决这个问题的。

我们常常看到一些jquery函数会有callback这个参数,比如

1

$(selector).fadeOut(speed,callback);

这里fadeOut方法的第二个参数callback,就是一个回调函数,意思就是说,在fadeOut 函数执行完之后,会执行callback函数。

回到刚开始的问题,此时就很明朗了。我只需要把$(‘#top_alert’).remove();这一句写进callback函数里面就行了。具体实现如下:

1

2

3

$(document.body).append('<div id="top_alert">'+text+'</div>');

$('#top_alert').fadeOut(3000,function(){

$('#top_alert').remove();

这样就可以不出错的实现该效果了。

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值