代码之家  ›  专栏  ›  技术社区  ›  b. e. hollenbeck

将单击事件传递到容器中而不重新单击容器(javascript)

  •  2
  • b. e. hollenbeck  · 技术社区  · 16 年前

    我有一种情况,我有一个导航菜单,它是一系列 <ul> <li> 其中有一个标签。我想把整个 < 可单击而不是 <a> 标签内的标签。例如:

    <ul id="home">
        <li id="navtab">
            <a id="home-link" onclick="doHome();">HOME</a>
        </li>
    </ul>
    

    锚点是动态创建的,所以我需要保持这个结构。因此,我试图找出如何在 <李> < 标记,然后在 <李> 级别并导致递归。

    我正在使用jQuery,但这在答案中是不必要的,甚至是不相关的。

    我已经尝试添加e.stopPropagation()和preventDefault,但没有得到积极的结果。

    2 回复  |  直到 16 年前
        1
  •  4
  •   Josh Stodola    16 年前

    与其使用Javascript,为什么不使用CSS并使 <a>

    #home li a {
      border:solid 1px #000;
      display:block;
    }
    

    这从本质上说应该使整个 <li> 可点击。但是,如果将特定高度或填充值应用于 li 使用CSS时,您应该将这些规则向下移动到 a .

        2
  •  0
  •   Jage    16 年前

    您可以将函数复制到父级。这可能会有问题,具体取决于您是传递dom对象还是引用该函数中与参数相关的其他dom对象。我还没有测试过这个,但它应该可以正常工作。

    $('#home-link').each(function(){
        var func = this.onclick;
        this.parentNode.onclick = func;
        this.onclick = function(){ };
    });