2013-11-21 34 views
0

在IE 7中做我的項目(不幸)。我有這個DOM,我想知道在點擊按鈕之後定位的最接近輸入文本的ID,而不是之前的輸入文本。這裏的例子DOM:如何獲得沒有jQuery的最接近輸入文本的id?

<input type="text" id="txt1" /> 
<br/> 
<button>Get ID</button> 
<input type="text" id="txt2" /> 
<br/> 

我知道該怎麼做jQuery的,但沒有人知道如何做到這一點的「硬」的方式(如果可能的話)?謝謝。

回答

2

它應該很容易,如果他們總是像這樣的兄弟姐妹。

var nextInputId = buttonClicked.nextSibling.id; 

jsFiddle

這是脆弱的,不建議任何東西,但一個非常簡單的一套有限的標記。

不幸的是,nextElementSibling不可用,直到IE9,所以如果你有一個文本節點(甚至一些空白),你有一些痛苦。

一個不錯的解決方案,是相對穩健將是...

var node = buttonClicked; 
var nextInputId = null; 

while (node = node.nextSibling) { 
    if (node.tagName && node.tagName.toLowerCase() == "input") { 
     nextInputId = node.id; 
     break; 
    } 
} 

jsFiddle

+0

但是如果在按鈕和下一個輸入文本之間有一個ID爲ID的元素會怎樣?我也考慮過nextSibling在for循環中使用它。 – itagomo

+0

@itagomo然後使​​用第二個例子。如果它必須是'input [type =「text」]',那麼也檢查一下。 – alex

+0

明白了。但任何想法如何找出下一個輸入是否是'type =「text」'? – itagomo

相關問題