繁体   English   中英

添加事件监听器的最佳实践(javascript,html)

[英]best practice on adding event listeners (javascript, html)

我知道我可能会在这里要求登月,但我正在寻找一些有关添加事件监听器的最佳方式的经验丰富的意见,或者更确切地说是“何时”或“何处”将它们添加到js文件中。

以我的看法为例。 我有一个页面,其中有一堆onclick事件,现在必须由JS文件中的属性处理

例如

var test = document.getElementById("i-am-element");
test.onclick = testEventListener;

我的问题是我应该在js文件中添加它。

我打算如何去做它是有类似以下的东西

$(document).ready(function() {
    var test = document.getElementById("test-me-shane");
    test.onclick = testEventListener;

    //add all the functions to different elements
});

myfunction1(){}
myfunction2(){}
myfunction3(){}

因此,一旦文档准备就绪,只有这样才能添加所有事件监听器。 这是可以接受的还是有更普遍接受的方式。

注意:我知道这个问题可能看似主观,所以我正确的回答将是你看到的事件听众添加的最流行的方式。 我肯定必须得到多数人的接受,如果它类似于你应该在开始时或需要时声明变量的地方,我会事先道歉。

在Java中,变量应该声明在函数的顶部,还是需要它们?

您真的希望能够在同一个地方添加所有事件监听器; 为什么? 只是为了便于维护。

因此,放置所有事件侦听器的最佳位置是您可以保证可能需要绑定事件处理程序的所有元素。

就是绑定事件处理程序的最常见位置是在DOMReady事件触发$(document).ready()

与往常一样,规则一些例外。 很偶然,你可能要绑定的事件处理程序,尽快 ,因为它是可用的元素; 这是在元素的结束标记之后定义的。 在这种情况下,应使用以下代码段:

<div id="arbitrary-parent">
    <h1 id="arbitrary-element">I need an event handler bound to me <strong>immediately!</strong></h1>
    <script>document.getElementById("arbitrary-element").onclick = function () { alert("clicked"); }</script>
</div>

您应该考虑的另一件事是如何绑定处理程序。 如果坚持: DOMElement.onclick = function () { }; ,你限制自己绑定每个事件的处理程序。

相反,以下方法允许您为每个事件绑定多个处理程序:

function bind(el, evt, func) {
    if (el.addEventListener){
        el.addEventListener(evt, func, false);
    } else if (el.attachEvent) {
        el.attachEvent('on' + evt, func);
    }
}

当您在html中声明元素时,是否有一个特定的原因,您不能简单地指定关联
<someTag id="i-am-an-element" onclick="functionToTheEventToExecute()"> </someTag>
大概吧。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM