我可以一次为两个属性声明相同的值

时间:2010-05-28 07:37:13

标签: javascript html

例如,出于辅助功能的原因,我希望onfocusonmouseover具有相同的值。为了可维护性,我想只声明一次。

喜欢能做的是:

<a onmouseover,onfocus="assist('hello');">linktext</a>

但是,当然,这太简单了,也行不通。从标签中获取DRY的最佳方法是什么?

2 个答案:

答案 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)

我能想到的最好是使用一个函数,设置两个事件来调用函数并将公共代码放在那里。