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

按ID获取最近的元素

  •  1
  • Patrick  · 技术社区  · 17 年前

    我有两个要素:

    <input a>
    <input b onclick="...">
    

    单击b时,我想访问a并操作它的一些数据。a没有全局唯一的名称,因此document.getElementsByName已退出。在查看事件对象时,我认为event.target.parentnode将具有一些类似getElementsByName的功能,但对于<td>s,似乎不是这样。有什么简单的方法可以做到这一点吗?

    4 回复  |  直到 9 年前
        1
  •  5
  •   Ulf Gjerdingen angelo.mastro    9 年前

    如果 a b 彼此相邻且父级相同,可以使用 prevSibling 性质 寻找 .

        2
  •  2
  •   Joseph Pecoraro    17 年前
    1. 您应该能够找到从 event object . 取决于您的浏览器 e.target e.srcElement . 下面的代码来自此 w3schools example :

      function whichElement(e) {
        var targ;
        if (!e) var e = window.event;
        if (e.target) {
          targ=e.target;
        } else if (e.srcElement) {
          targ = e.srcElement;
        }
      
        if (targ.nodeType==3) { // defeat Safari bug 
          targ = targ.parentNode;
        }
      
        var tname;
        tname = targ.tagName;
        alert("You clicked on a " + tname + " element.");
      }
      
    2. 然后您可以使用 nextSibling prevSibling DOM遍历函数。 Some more information here . 还有W3Schools的参考资料 XML DOM Nodes .

        3
  •  1
  •   ujh    17 年前

    Prototype 在DOM中也有很好的移动功能。在您的示例中,如下所示可以实现这一技巧:

    b.up().down('a')
    

    如果在这个级别上有不止一个元素,那么您可以使用CSS选择器来精确地指定您想要的元素。

        4
  •  0
  •   rp.    17 年前

    把普通的Javascript放在后面。获取jquery——它将为您节省大量时间。

    http://docs.jquery.com/Selectors