javascript - 这些是正确的事件监听器语义吗?

标签 javascript

我要做的只是在单击按钮时隐藏一个 div:

function hideDiv() {
    myDiv.style.visibility = 'hidden';
}

上面的函数是说,helpers对象的一个​​成员

如果我执行以下操作,我必须确保在该行之前创建助手对象。还有其他陷阱吗?:

buttonOK.addEventListener('click', helpers.hideDiv, false);

这样做会更好吗:

buttonOK.addEventListener('click', function () {helpers.hideDiv();}, false);

或者我是否需要传入事件参数,即使我不使用它?

buttonOK.addEventListener('click', function (event) {helpers.hideDiv();}, false);

还是其他?

最佳答案

如果您没有在其他任何地方调用 hideDiv,那么我认为最佳做法是使用匿名函数而不是使用全局命名空间并使用 this 来引用触发的元素事件:

buttonOK.addEventListener('click', function(e) {
    myDiv.style.visiblity = 'hidden';
}, false);

没有理由以这种形式使用额外的功能:

buttonOK.addEventListener('click', function (event) {hideDiv();}, false);

除非您必须将一些自定义参数传递给 hideDiv(),而您在这里没有这样做。这个额外的函数只是额外的开销,并将调用模式更改为 hideDiv,这样 this 就不会成为触发事件的元素。


如果您也在其他事件处理程序中使用 hideDiv,那么您可以使用:

function hideDiv(e) {
    myDiv.style.visiblity = 'hidden';
}

buttonOK.addEventListener('click', hideDiv, false);
buttonOK2.addEventListener('click', hideDiv, false);
buttonOK3.addEventListener('click', hideDiv, false);

关于javascript - 这些是正确的事件监听器语义吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20624192/

相关文章:

javascript - JavaScript 中这个功能的名称是什么?

javascript - 理解对象时遇到问题(获取母节点和子节点之间的年龄差异)

javascript - 单击 React Native 中的项目时如何关闭模式并从 flatlist 返回值?

javascript - 查找 cookie 字符串中存在的 cookie - javascript

javascript - 使用 ng-show 和 $window.onload 在页面加载后显示元素

javascript - 如何使用 Bootstrap-Tour 和动态路径处理多页面游览?

javascript - 多次调用 Raphael 悬停函数仅有效 'sometimes'

javascript - 在 JQuery 中通过 anchor 时进行检测

javascript - YUI3 Datatable - 行格式和选择

javascript - 向 Jquery 中的元素添加自定义属性