原型|当处理程序绑定到类时,keyup Event.stopObserving() 不起作用

发布于 2024-10-16 04:13:27 字数 936 浏览 1 评论 0原文

这是我的抱怨:我正在观察文档中的按键操作,然后调用处理程序。处理程序正在调用类的函数并绑定到类的上下文。当调用该函数并且满足我的条件时,它应该停止观察处理程序。但事实并非如此。

创建了一个类,这是我在页面上调用的函数:

look_for: function(key_combo) {

    this.keys_array = key_combo.split("+");

    this.match_key_handler = this.match_keys.bind(this);

    document.observe('keyup', this.match_key_handler);

},

这​​调用文档来观察 keyup 并调用 this.match_keys()。正如您所看到的,它被分配给一个处理程序,因为该函数需要绑定。下面是 match_keys 函数:

match_keys: function() {

  // matching the keys here, blah blah

  if(this.keys_matched) {

    document.stopObserving('keyup',this.match_key_handler);

   }

}

但是,当满足条件时,它不会停止观察!如果我停止观察文档上的所有按键,它将取消注册此函数,但我希望它仅取消注册 match_key_handler。

StackOverflow,帮帮我!下面是另一篇类似的文章。按照页面上的内容进行操作,但仍然没有骰子。

停止观察 JS 原型不与 .bind 一起使用的事件(这个)

Here's my beef: I'm observing the document for a keyup and then calling a handler. The handler is calling a function of a class and is bound to the class's context. When the function is called and my conditionals are met, it's supposed to stop observing the handler. But its not.

Created a class, this is the function I'm calling on page:

look_for: function(key_combo) {

    this.keys_array = key_combo.split("+");

    this.match_key_handler = this.match_keys.bind(this);

    document.observe('keyup', this.match_key_handler);

},

This calls the document to observe keyup and calls this.match_keys(). As you can see, it's assigned to a handler because the function needs to be bound. Below is the match_keys functions:

match_keys: function() {

  // matching the keys here, blah blah

  if(this.keys_matched) {

    document.stopObserving('keyup',this.match_key_handler);

   }

}

However, when the conditional is met, it doesn't stop observing! If I stopObserving all keyups on the document, it will unregister this function but I want it to only unregister the match_key_handler.

StackOverflow, help me out! Below is another post thats similar. Followed what was on the page but still no dice.

Stop Observing Events with JS Prototype not working with .bind(this)

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

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

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。
列表为空,暂无数据
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文