2011-11-09 198 views
1

我無法從這個網站選擇輸入值:jQuery的選擇兄弟

<li class="t-item"> 
    <div class="t-mid"> 
    <span class="t-in t-state-selected">102/NAH</span> 
    <input class="t-input" name="itemValue" value="subject:4033" type="hidden"> 
    </div> 
</li> 

我可以使用下面的獲得<span>元素的值:

var text = $("#TreeView .t-state-selected").text(); 

我如何得到兄弟姐妹<input>元素的價值?

下面是完整的功能,如果它可以幫助提供一些上下文(事件是Telerik的TreeView的OnLoad事件):

function OnLoad(e) { 
     // _lastSubject is known, find the selected node and get the detail 
     var treeView = $('#TreeView').data('tTreeView'); 
     var text = $("#TreeView .t-state-selected").text(); 
     console.log("ugh, what I really want is the sibling input value"); 
    } 
+0

當然,我試過next()。通過編寫問題的過程,我的例子正在工作。我想這就是在SO上編寫問題的價值。下面的@JaredPar也回答了我的一個問題,即「我可以在選擇中包含」輸入「,以防將來版本中的元素髮生輕微變化。 – Brett

+1

我會使用兄弟姐妹而不是下一個,它更靈活一點你改變佈局。 – Patricia

回答

3

請嘗試以下

var i $('#TreeView .t-state-selected').next('input'); 

該解決方案是一個比較穩健的,因爲這將確保它得到一個input元素VS只是任何類型的下一個元素。

0

你可以使用next

var $input = $("#TreeView .t-state-selected").next(); 
var inputVal = $input.val(); 
0

jQuery函數next()會做這個。

var i = $("#TreeView .t-state-selected").next(); 
1

可以使用siblings()方法,它可以給出一個過濾器:

var $input = $("#TreeView .t-state-selected").siblings('.t-input'); 

這樣即使其他元素後出現的跨度和輸入之間(而next()不會)工作。

jsFiddle Demo