2008-09-10 144 views
1

获得最接近的元素,我有两个要素:通过ID

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

当单击B,我想访问和操纵它的一些数据。 A没有全局唯一的名称,所以document.getElementsByName已经失效。纵观事件对象,我认为event.target.parentNode会有一些像getElementsByName这样的函数,但是这似乎不是<td> s的情况。有没有简单的方法来做到这一点?

回答

5

如果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。又一个w3schools参考XML DOM Nodes

1

Prototype也有不错的功能,在DOM走动。在您的例子像下面会做的伎俩:

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

如果有多于一个在你的手这个水平,你有CSS选择器的功率元件指定正是你想要

哪个元素