我正在为我的游戏制作小地图。当您单击地图时,它会扩展为更大的地图。我在minimap元素中添加了一个点击处理程序。
$("#minimap").click(function(){
expand larger map
我还制作了工具提示,告诉用户点击小地图。当用户点击小地图时,它会删除工具提示。此事件处理程序绑定发生在Tooltip类中:
$("#minimap").on("click", function () {
$(this).unbind("click");
removeChild(the tooltip object);
我不希望每次单击展开地图时都会继续触发工具提示操作,因此我将其取消绑定。不幸的是,这解除了动作以扩展其他地方定义的小地图。
如何附加某种唯一ID以告知$("#minimap")
仅取消绑定与工具提示相关联的点击事件?
答案 0 :(得分:2)
使用.one()仅绑定一次然后忘记它
将处理程序附加到元素的事件。每个事件类型(ref)每个元素最多执行一次处理程序。
$("#minimap").one("click", function () {
removeChild(the tooltip object);
答案 1 :(得分:1)
你可以做三件事:
使用one
代替on
,Drakes suggested。
保留对该函数的引用,稍后解除对该函数的解除绑定:
function tooltipClickHandler() {
$(this).off("click", tooltipClickHandler);
removeChild(the tooltip object);
}
$("#minimap").on("click", tooltipClickHandler);
使用event namespace,您可以在不必记住功能参考的情况下,唯一地指定您的点击处理程序:
$("#minimap").on("click.tooltiphandler", function () {
$(this).off("click.tooltiphandler");
removeChild(the tooltip object);
});
附注:我已使用off
而不是unbind
,因为您已使用on
设置处理程序,而off
是"首选"从jQuery 1.7开始。