【问题标题】:Getting closest element by id通过 id 获取最近的元素
【发布时间】:2010-09-08 08:53:33
【问题描述】:

我有两个元素:

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

当点击 b 时,我想访问 a 并操作它的一些数据。 A 没有全局唯一的名称,因此 document.getElementsByName 不可用。查看事件对象,我认为event.target.parentNode 会有一些类似getElementsByName 的功能,但对于

s 似乎并非如此。有什么简单的方法吗?

【问题讨论】:

    标签: javascript html dom


    【解决方案1】:

    如果ab 相邻且具有相同的父级,则可以使用bprevSibling 属性来查找a

    【讨论】:

      【解决方案2】:
      1. 您应该能够找到从event object 中单击的元素。根据您的浏览器,您可能需要e.targete.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. 然后您可以使用nextSiblingprevSibling DOM 遍历函数。 Some more information here。又是 XML DOM Nodes 的 w3schools 参考。

      【讨论】:

        【解决方案3】:

        Prototype 也有很好的函数可以在 DOM 中移动。在您的示例中,类似以下内容可以解决问题:

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

        如果该级别有多个 a 元素,您可以使用 CSS 选择器来准确指定您想要的元素

        【讨论】:

          【解决方案4】:

          把普通的 JavaScript 抛在脑后。获取 JQuery——它将为您节省大量时间。

          http://docs.jquery.com/Selectors

          【讨论】:

            猜你喜欢
            • 2015-05-22
            • 2017-05-26
            • 1970-01-01
            • 1970-01-01
            • 2015-09-02
            • 2012-07-20
            • 2011-07-17
            • 2013-07-27
            相关资源
            最近更新 更多