[(this)已绑定到对象时如何在功能范围内访问目标DOM元素?

问题描述 投票:1回答:2

我尝试搜索了一段时间,但实际上找不到任何东西。可能没有适当地措辞,但是下面是示例代码。

class MyClass {
   constructor(){
      this.list = $('li.someClass');
      this.runEvents();
   }

   runEvents() {
      this.list.on('mouseover', this.getSomeProperty.bind(this));
   }

   getSomeProperty() {
      // how do i get the specific element now that this points to the instance of MyClass?
       var attribute = $(this).data('someAttr');
   }
}

希望以上内容有意义。向我指出正确方向的任何帮助将不胜感激。

javascript jquery function oop bind
2个回答
1
投票

一旦绑定了函数,就不可能将其原始的this返回到事件处理程序中。但是您可以检查event参数,并查看event.currentTarget以获取触发侦听器的元素:

getSomeProperty(event) {
  const list = event.currentTarget;
  const attribute = $(list).data('someAttr');
}
[引用范围,而不是.currentTarget.target更可靠,因为它引用侦听器所附加的元素,而不是事件被调度到的内部元素。)

0
投票
您可以在li.someClass中获取当前事件。如果使用lambda表示法,则不需要绑定。

<span>
li
© www.soinside.com 2019 - 2024. All rights reserved.