2011-02-18 66 views
9

我想獲得下面的標籤,以獲取選擇的值並將其粘貼到輸入。使用jQuery來獲取兄弟

<td class="ms-formbody" style="width:385px"> 
    <input name="ctl00$PlaceHolderMain$dlFields$ctl00$txtSource" type="text" id="ctl00_PlaceHolderMain_dlFields_ctl00_txtSource" class="ms-input" /> 
    <select name="ctl00$PlaceHolderMain$dlFields$ctl00$ddlSourceFields" id="ctl00_PlaceHolderMain_dlFields_ctl00_ddlSourceFields" class="ms-input"> 
     <option value="Some Field Name 1">Some Field Name 1</option> 
     <option value="Some Field Name 2">Some Field Name 2</option> 
     <option value="Some Field Name 3">Some Field Name 3</option> 
     <option value="Some Field Name 4">Some Field Name 4</option> 
    </select> 
    <a href="javascript: appendField();">append</a> 
</td> 

我似乎無法弄清楚如何抓住兄弟姐妹。我試過$(this).siblings("input").val(),但那個錯誤的網頁錯誤'parentNode.firstChild' is null or not an object

試過$(this).prev().prev().val()並且回來未定義。抓住這些東西的最好方法是什麼?

謝謝, 大衛

回答

13

您的問題幹來自你的方法。直接調用函數不會做你期望的,也就是有一個jQuery對象代表<和>標籤。而不是直接調用函數,您可以註冊一個函數來響應 a >上的click事件。

首先,給你鏈接的ID:

<a href="#" id="appendSelect">append</a> 

然後用一個jQuery的更換你的appendField()功能選擇響應click

$(document).ready(function() { 
    $("#appendSelect").click(function() { 
    var $thatInput = $(this).siblings("input"); 
    var $selectValue = $(this).siblings("select").val(); 
    $thatInput.val($selectValue); 
    }) 
}); 

採用這種方法$(this)將代表您<一個> 。

通過使用javascript調試控制檯(chrome默認有一個,並且您可以在Firefox上使用Firebug),您可以更深入地瞭解我正在談論的內容。再次嘗試基於原始功能的方法並添加console.log($(this));聲明。你應該看到它打印出一個DOMWindow對象。現在把相同的日誌語句放在click函數中,你會發現jQuery給了你一個$(this)來表示你期望的結果。

+0

感謝您的幫助,這真的很有幫助。在你領導之後,我用一個div包裝了我的tabe,然後抓住了它,並且它工作起來很棒 $(document).ready(function(){(「#myList a」)。click(function(){ var $ selectValue = $(this).siblings(「select」)。val(); var $ thatInput = $(this).siblings(「input」); $ thatInput.val($ selectValue); }) }); – 2011-02-18 14:18:33

+0

很高興幫助 – 2011-02-18 19:07:33

0

使用。孩子()或.find()

。孩子只會尋找父母的直接子,在父以下所有級別找到長相。

$('.ms-formbody').find('select').val();

0

這將只對這些ID的工作,但你可以很容易地改變他們:

$('#ctl00_PlaceHolderMain_dlFields_ctl00_txtSource').val($('#ctl00_PlaceHolderMain_dlFields_ctl00_ddlSourceFields').val()); 
0

試試這個...

$(this).parent().find('input:first').val(selectedOptionValue); 
+0

沒有工作,見上文以前的帖子,我覺得這是我的方法的問題 – 2011-02-18 13:41:28

4

嘗試:

$(this).parent().children("input:first").val(); 
+0

沒有工作,見上文以前的帖子,我認爲這是有問題我的方法 – 2011-02-18 13:40:34