代码之家  ›  专栏  ›  技术社区  ›  graphicdivine

我能同时为两个属性声明相同的值吗

  •  0
  • graphicdivine  · 技术社区  · 14 年前

    例如,出于可访问性的原因,我希望 onfocus onmouseover 具有相同的值。为了便于维护,我只想声明一次。

    我想要什么 喜欢 要做到这一点:

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

    但是,当然,那太容易了,而且不起作用。我能做到这一点的最好方法是什么 DRY 从我的标签上消失?

    2 回复  |  直到 14 年前
        1
  •  7
  •   graphicdivine    14 年前

    更好的方法是将所有事件处理程序移出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
    });
    
        2
  •  4
  •   Cobusve    14 年前

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