jquery中的绑定鼠标点击事件,为什么先弹出提示框

发布于 2022-09-05 10:21:34 字数 294 浏览 40 评论 0

Image
$("p").click(function(){

$(this).hide();
alert("hidden");

})
为什么用jquery为元素添加点击事件,不用回调函数,就会先弹出提示框,再执行隐藏函数,我不是很理解,可以解释一下回调函数的意义吗

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(4

℉服软 2022-09-12 10:21:34

hide本身就是异步啊。当然是先有alert。

console.log(111111111111);
alert(1);
你先吧控制台打开再刷新,肯定是能看见打印结果的。你反过来写就看不见了,要关了弹出框才有。

情话墙 2022-09-12 10:21:34

$(this).hide依然是在alert前面执行的,只不过这个调用相当于是发送一个事件,告诉DOM渲染线程DOM需要更新,而DOM渲染线程和JS执行的线程是互斥的,即不能同时执行,只有当前JS线程中的Task执行完成后,DOM渲染线程才会执行。DOM渲染线程执行后,你才能发现页面上的元素被隐藏了。这个问题的关键点是,JS代码执行和DOM更新是分别在两个线程中进行的,且这两个线程无法同时执行。

迷迭香的记忆 2022-09-12 10:21:34

$.hide()是异步的,要想实现你想要的功能,使用

$(this).css('display','none')

或者为其添加一个隐藏的类,例如

$(this).addClass('hidden')
云雾 2022-09-12 10:21:34
$.when($(this).hide()).then(function( data, textStatus, jqXHR ) {
  alert("hidden");
});
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文