2012-04-07 129 views
3

我有這樣的:如何選擇第三個DOM元素的子元素?

<div ><a href='#' id='my_target'>Link</a></div> 
<div></div> 
<div><div></div></div> 
<div><div id='my_div'></div></div> 

如何選擇#my_target,當從my_div觸發事件?

我嘗試了諸如prev().prev().prev().children()之類的東西,但是我無法使其工作,並且我想要更高效的東西。

+0

是否有一個原因,你不能使用$(「#my_target」)? – gabitzish 2012-04-07 14:28:55

+0

@gabitzish:在這個例子中,可能只是作爲指針使用。 – Manishearth 2012-04-07 14:33:58

+0

你好,我在下面得到了答案。我想使用$(this),這就是爲什麼$(「#my_target」)不會幫助我。 Regards – alexx0186 2012-04-07 14:51:22

回答

3

另外,您也可以只使用相對路徑: HTML:

<div><a href='#' id='my_target'>Link</a></div> 
<div></div> 
<div><div></div></div> 
<div><div id='my_div'></div></div> 

JS:

$(document).ready(function() { 
    console.log($("#my_div").parent().parent().children(':first')); 
}); 

的jsfiddle: http://jsfiddle.net/5Bf6g/

+0

嗨,感謝您的解決方案。我只是想知道什麼console.log會做什麼?儘管我明白這是一個調試功能。再次感謝 – alexx0186 2012-04-07 14:49:59

+0

啊,對不起。這是當今大多數網頁瀏覽器內置的一項功能,(Chrome網頁調試工具,firefox/firebug和Internet Explorer網頁開發工具欄,它允許快速記錄元素並顯示它的內容,而不是像alert()等等 – Arend 2012-04-07 15:04:44

+0

噢好吧我看到了,非常感謝。 – alexx0186 2012-04-07 15:14:12

2

我做到了,像這樣:

​var md = $("#my_div");​​​​​​​​​ 
var anchor = $(md.parent().prevAll().last().find("a")); 
console.log(anchor); 

的jsfiddle:http://jsfiddle.net/t9HZz/

prevAll()抓住所有父母的兄弟姐妹,然後我們抓住最後一個與last(),因爲它增加的兄弟姐妹以相反的順序,那麼我們就可以找到剛剛從那裏的鏈接。

雖然在您的示例中,鏈接確實有一個ID,因此您可以在此特定示例中執行$("#my_target")

+0

嗨,感謝您的回覆,它爲我工作。 – alexx0186 2012-04-07 14:47:47

相關問題