【发布时间】:2014-03-05 14:17:10
【问题描述】:
假设我有以下事件:
$(button).on('mouseup', function (event1) {
$(something).show();
$(document).on('mouseup', function (event2) {
$(something).hide();
});
});
因此,单击按钮时它会显示“某些东西”,单击文档时会隐藏它。如何确保第二个 evnet 不会在创建它的同一事件中触发?现在这些东西会立即显示和隐藏(至少在 Firefox 上)。
我需要在没有任何类型的全局变量的情况下执行此操作,最好是。
【问题讨论】:
-
从事件处理程序中设置事件处理程序几乎总是错误的(就像这里一样)。与其关注机制,不如描述你的目标。
-
这会在文档中添加新的 mouseup 事件,每次释放按钮时?除此之外,您是否尝试过使用
console.log(event1)和console.log(event2),看看会得到什么?事件在 jQuery 中有target属性,你可以使用它。不过,您需要修复您的代码。 -
@D.Kasipovic 这很奇怪。我尝试比较时间戳,如果我只是记录事件,它会显示它们,但如果我在 if 语句中使用它们,它会将它们显示为未定义。我将更改问题以说明如何;
-
@D.Kasipovic 没关系,我是个白痴。我使用了 event.timestamp 而不是 event.timeStamp。现在可以了。我不知道是要更改问题以包含答案还是自己回答....
-
我同意@Jon 的观点,你几乎肯定做错了。但至少,您应该将
.on替换为.one,这样您的嵌套事件只会触发一次然后被删除。否则,您将堆积.mouseup事件处理程序,直到您的网页停止运行。
标签: javascript jquery