gpt4 book ai didi

jQuery - 备份/缓存元素的事件?

转载 作者:行者123 更新时间:2023-12-01 01:10:10 29 4
gpt4 key购买 nike

有没有办法备份在任何给定元素上设置的所有事件?

背景故事:我有一些代码,当用户将鼠标悬停在某个图标上时(想想悬停帮助文本),会显示绝对定位的“弹出窗口”。如果用户将鼠标悬停在弹出窗口上,它会停留在周围,但如果用户将鼠标移开弹出窗口或图标,则弹出窗口将隐藏。这一切都按预期进行。但是,弹出窗口内部也有一些表单元素(不要问),如果用户开始填写表单,我想删除隐藏弹出窗口的 mouseleave 事件,这样他们就不会意外地将鼠标移开并丢失他们的数据。抛开糟糕的用户体验不谈,这很容易做到,但更重要的是,我想在用户提交表单或单击图标后重新添加 mouseleave 功能。

伪代码:

var event_backup;
var icon = $("img#icon");
var popup = $("div#popup");

icon.bind("mouseenter"):
popup.show();
icon.bind("mouseleave"):
popup.hide();
icon.bind("click"):
popup.hide();
popup.events = event_backup; //how do I do this?

popup.bind("mouseleave"):
popup.hide();
popup.bind(...):
//lots of bind events for popup that I want to keep
//I'd rather not duplicate code and manually re-add these later

popup.children("form input").bind("focus"):
event_backup = popup.events; //how do I do this?
popup.unbind();
popup.children("form input#done_button").bind("click"):
popup.events = event_backup; //how do I do this?

希望这是有道理的,如果这是一个愚蠢的问题,我们深表歉意……这是漫长的一天。

最佳答案

最好只有一个标志,并在相关函数的开头执行简单的检查(如果可以的话):

if (skipHover) return;

如果在任何情况下您想要访问绑定(bind)事件:

popup.data('events').click

是绑定(bind)函数的数组,其他事件名称也是如此。

关于jQuery - 备份/缓存元素的事件?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7844206/

29 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com