- r - 以节省内存的方式增长 data.frame
- ruby-on-rails - ruby/ruby on rails 内存泄漏检测
- android - 无法解析导入android.support.v7.app
- UNIX 域套接字与共享内存(映射文件)
我有一个包含方法的对象。这些方法被放入对象内部的一个匿名函数中。它看起来像这样:
var t = {};
window.document.addEventListener("keydown", function(e) {
t.scroll = function(x, y) {
window.scrollBy(x, y);
};
t.scrollTo = function(x, y) {
window.scrollTo(x, y);
};
});
(代码多了很多,但这足以说明问题)
现在我想在某些情况下停止事件监听器。因此,我正在尝试执行 removeEventListener,但我不知道该怎么做。我在其他问题中读到无法在匿名函数上调用 removeEventListener,但在这种情况下也是如此吗?
我在匿名函数中创建了一个方法,因此我认为这是可能的。看起来像这样:
t.disable = function() {
window.document.removeEventListener("keydown", this, false);
}
为什么我不能这样做?
还有其他(好的)方法可以做到这一点吗?
奖金信息;这只需要在 Safari 中工作,因此缺少 IE 支持。
最佳答案
如果您在实际函数中,则可以使用 arguments.callee 作为函数的引用。如:
button.addEventListener('click', function() {
///this will execute only once
alert('only once!');
this.removeEventListener('click', arguments.callee);
});
编辑:如果您在严格模式下工作("use strict";
)
关于javascript - JavaScript 中匿名函数的 removeEventListener,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4950115/
我有以下代码,我在其中向文档添加了一个事件监听器,然后将其删除。 document.addEventListener("keypress", gameStart); function gameStar
我想知道是否可以在不引用应删除的事件处理函数的情况下删除事件监听器。 jquery的$().unbind('touchmove')将无法工作,因为事件监听器是使用 Javascript 的 addEv
下面的代码应该在轮到玩家手中的每张扑克牌时添加一个事件监听器,然后在轮到其他玩家时删除事件。 它不起作用。一旦事件在第一回合初始设置,该玩家的牌就保持可点击状态。 takeTurn ( playerI
这个问题已经有答案了: How to removeEventListener that is addEventListener with anonymous function? (5 个回答) 已关闭
由于某种原因,我需要在滚动页面结束时延迟点击并阻止Default一段时间。所以我写了这样的内容: // const disableClickDuringScrollHandler=(e)=> { //
我不明白为什么单击 div2 元素后 div1 元素仍然分配了事件监听器。似乎 specialFunction() 的 div 参数在初始执行后和单击 div2 后是 div1 元素,其中应该从 di
这个问题已经有答案了: Removing event listener which was added with bind (10 个回答) 已关闭 5 个月前。 我一直在研究 es6 类,并尝试设置
我知道有类似问题的问题,但我不知道如何解决该问题。 我需要解决这个问题:我在 html 文档中添加了一个 onClick 监听器,然后,在 js 中我尝试删除它,但我不能。 这是我的代码:
我正在尝试制作一款纸牌游戏。在我的游戏中,用户有义务选择一张卡(我向每张卡添加 EventListeners ,在我的 HTML 中为 ),选择后他不应该允许点击任何其他卡(我必须删除所有 Even
我添加了一个事件监听器以在用户操作后捕获 SVG 的加载。 HTML JS mySVG = document.getElementById('mySVG'); mySVG.addEventListe
这个问题在这里已经有了答案: The value of "this" within the handler using addEventListener (10 个答案) 关闭 3 年前。 我一定是
我的元素上有一个事件监听器,由于某种原因我不知道为什么没有删除。 我是这样设置的: for (i = 0; i < data[0].length; i++) { (function(i){
我想弄清楚为什么我的 removeEventListener 不起作用,我尝试了多种方法来修复它但仍然不起作用任何见解都会有所帮助。 addEventListener 按预期工作,但当我尝试删除监听器
我的 Vue 应用程序中有一个相当简单的组件。当用户打开菜单时,我将事件监听器添加到 #app 元素以检测“外部”点击。 当用户在外部单击时,它会关闭菜单并移除事件监听器。这按预期工作。问题是,当用户
我按照教程创建了 slider 效果。问题是效果在较小的屏幕上看起来不太好。我可以很容易地使用媒体查询处理样式,问题是 javascript 不是这种情况。这是我的代码: HTML:
考虑以下示例。我们有一个简单的 html 文件 Create button 和两个版本的js文件。版本一个: function create_button() { var new_
有没有办法根据变量而不是事件来删除偶数监听器?我想删除我设置的两个事件监听器,但不想删除第三方网站可能已启用的其他事件监听器。 var scrollVar = window.addEventListe
我有一些简单的代码,但目前它不会在第一次调用后删除监听器。我怎样才能做到这一点?还是我真的需要在收到通知后对 var 集添加冗余 if/else 检查? document.addEventLi
我有一个生成 HTML 元素的对象,这些元素也与该对象的数组相关联,假设我们有一个它的实例。因此,当它创建元素时,它还会将以下事件监听器分配给元素的嵌套部分(类是 uploadDelete)。 现在这
我已经尝试使用 console.log 对我的代码进行故障排除并查看它是否会运行,但它似乎只是绕过了 removeEventListeners。我让同行检查了我的代码,但不明白问题出在哪里。Javas
我是一名优秀的程序员,十分优秀!