在JavaScript中,addEventListener()方法可用于将事件监听器附加到元素。然而,当使用bind()方法将侦听器函数绑定到对象时,删除侦听器可能会成为一个挑战。
一种常见的方法是维护绑定侦听器函数的列表。这样可以通过为removeEventListener()方法提供相同的函数引用来轻松删除。
<code class="javascript">// Constructor MyClass = function() { this.myButton = document.getElementById("myButtonID"); this.listenerList = []; this.listenerList.push(this.myButton.addEventListener("click", this.clickListener.bind(this))); } // Prototype method MyClass.prototype.clickListener = function(event) { console.log(this); // must be MyClass } // Public method MyClass.prototype.disableButton = function() { this.listenerList.forEach((listener) => removeEventListener('click', listener)); }</code>
另一种方法是将绑定函数引用分配给变量,如解决方案所建议的:
<code class="javascript">var boundClickListener = this.clickListener.bind(this); this.myButton.addEventListener("click", boundClickListener); this.myButton.removeEventListener("click", boundClickListener);</code>
通过直接使用绑定函数,您无需维护绑定侦听器列表,从而简化了删除过程。
以上是在 JavaScript 中使用'bind()”时如何有效删除事件监听器?的详细内容。更多信息请关注PHP中文网其他相关文章!