例如,出于辅助功能的原因,我希望onfocus
和onmouseover
具有相同的值。为了可维护性,我想只声明一次。
我喜欢能做的是:
<a onmouseover,onfocus="assist('hello');">linktext</a>
但是,当然,这太简单了,也行不通。从标签中获取DRY的最佳方法是什么?
答案 0 :(得分:7)
更好的方法是将所有事件处理程序移出HTML并进入javascript。
<a id="some_id">link text</a>
(您不需要使用ID,只是为了便于演示。)
var link = document.getElementById('some_id');
link.onmouseover = link.onfocus = function() {
assist('hello');
};
如果您希望将其提升到新的水平,可以在多个链接中进行概括。这个例子使用jQuery。
<a href="#hello" class="assist">link text</a>
<a href="#something" class="assist">another link</a>
然后你将事件处理程序一次性应用于所有链接(非常干燥!)
$('a.assist').bind('mouseover focus', function() {
assist(this.href); // you'd need to clean up the href here, but you get the picture
});
答案 1 :(得分:4)
我能想到的最好是使用一个函数,设置两个事件来调用函数并将公共代码放在那里。