2011-05-23 64 views
1

我有一個下拉列表顯示值在選擇標記,我通常會只使用$('#ID')。val()來獲得值,但ID是未知的或動態添加的行。jquery查找所選項目的價值在下拉與扭曲

在關閉選擇標記之後,我有一個jquery ui圖標,當我單擊它時將捕獲當前選定的下拉選項的值(此值將被複制到其他選擇列表中)。這段代碼循環播放,所以我知道我需要使用某種.find()或.parent()或沿着這些行的東西,這些東西仍然不會與我沉迷。

這裏是源代碼:

<tr> 
<th class="form"><label>SI Contact</label></th> 
<td id="name_29805"><div style="float: left;"> 
     <select name="contactsbcuid" id="contactsbcuid_29805" sid="29805" ordr="1"> 
      <option value="userID1234">Doe, John</option> 
      <option value="userID1235">Doe, Jane</option> 
      ... 
      <option value="userID1236">Smith, David</option> 
     </select> 
     <input name="orig_contactsbcuid" id="orig_contactsbcuid_29805" value="userID1235" sid="29805" ordr="1" type="hidden"> 
    </div> 
    <div style="float: right;"><span class="ui-icon ui-icon-copy vtip" onClick="CopyDown('contactsbcuid',1)" id="select_contactsbcuid_29805" title="Copy the selected value down the list." style="float: right;"></span></div></td> 

+0

你的源代碼丟失,請重試我有一定的困難,格式化我的源代碼具有ColdFusion自定義標籤 – mcgrailm 2011-05-23 19:18:55

+0

。如果這是令人困惑的,我可以重寫這個以使更簡單的更多的stackoverflow社區更容易。儘管有CF代碼,但這更像是一個jQuery問題。 – HPWD 2011-05-23 19:19:16

+1

你可以得到顯示代碼後,它已經生成rthant比coldfusion – mcgrailm 2011-05-23 19:21:23

回答

0

它看起來像只存在於TableCell的一個選擇。 所以它應該足以找到'TD',並且當你發現它搜索選擇。

var value = $(this).parents('td').find('select').val(); 
+0

這是我正在嘗試,但我看到你正在使用'父母',而我正在使用'父' ()「。選擇選項:選擇」)。val();' ...和其他幾個選擇器:) – HPWD 2011-05-23 19:26:52

+1

我通常會找到。父母更容易使用。如果使用find,請嘗試查詢select元素,而不是所選的選項。如果在select元素上使用val(),它應該返回所選選項的值。 – nxt 2011-05-23 19:31:27

+0

'var vl = $(this).parents('td')。find('select')。val(); alert('所選值爲:'+ v1);' 警報給我未定義的vl。你還有什麼其他想法? – HPWD 2011-05-23 19:35:47

0

Is this jsFiddle what you are essentially looking for?

的jQuery:

$('span[id^="select_contactsbcuid"]').click(function() { 

    var $select = $('select[name^="' + this.id.split("_")[1] + '"]'); 
    if ($select.length) { alert($select.val()); } 

}); 
+0

是的,但該值需要從一個單獨的功能中獲得。另外,我不能使用.change,它必須是一個函數。輸出集非常大,並且等待jQuery將所有選擇器/方法應用於代碼時,會創建一個腳本消息來實現效果,「此腳本需要很長時間才能完成。是否要取消腳本?是沒有「 我想只在被調用時觸發這個按鈕。 – HPWD 2011-05-23 19:46:11

+0

好的...檢查我更新的jsFiddle並現在回答。 – 2011-05-23 19:49:48

+0

如果你想在大量的元素上使用它,則需要很長時間來附加所有的事件處理程序。您應該考慮使用jQuery委託函數,以便您可以使用事件冒泡並減少處理程序的數量 – nxt 2011-05-23 20:07:36