2010-10-28 64 views
4

我有下面的代碼,我有一個下拉列表(帶class =「addToList‘後一個按鈕(類=’addtoButton」):得到先前所選的下拉項

當我點擊按鈕,我想抓住從以前的下拉列表中選擇當前的值和文本。

$(".addToPortalButton").live('click', function (e) { 

// grab the previous dropdown list value and text here. 

}); 

什麼是做這個使用jQuery最簡單的方法。

^h ERE是HTML:

<select class="addToList" id="Teams" name="Teams"> 
    <option></option> 
    <option value="49">Team 1</option> 
    <option value="22">Team 2</option> 
</select> 
<input type='button' class="addToButton" value='Add to' /> 

<select class="addToList" id="Teams" name="Teams"> 
    <option></option> 
    <option value="49">Team 1</option> 
    <option value="22">Team 2</option> 
</select> 
<input type='button' class="addToButton" value='Add to' /> 

<select class="addToList" id="Teams" name="Teams"> 
    <option></option> 
    <option value="49">Team 1</option> 
    <option value="22">Team 2</option> 
</select> 
<input type='button' class="addToButton" value='Add to' /> 

回答

4

您可以使用.prev().prevAll()得到<select>之前是這樣的:

編輯:對於其中.live()已棄用的jQuery的新版本,新.on()語法:

$(document).on('click', '.addToButton', function (e) { 
    var sel = $(this).prevAll('.addToList:first'), 
     val = sel.val(), 
     text = sel.find(':selected').text();  
}); 

舊的版本:

$(".addToButton").live('click', function (e) { 
    var sel = $(this).prevAll(".addToList:first"), 
     val = sel.val(), 
     text = sel.find(':selected').text();  
}); 
+1

緩存,尼克,緩存! – 2010-10-28 10:34:09

+0

@Nick Craver - 我想利用班級名稱,如果我在下拉菜單後面和未來按鈕之前插入某些東西。是否有更加面向未來的解決方案 – leora 2010-10-28 10:34:37

+0

@ooo - 更新了一個稍微更加面向未來的方式來做到這一點,搜索所有以前的兄弟姐妹,直到找到'.addToList' – 2010-10-28 10:39:06

0

您可以用下面的代碼做到這一點:

$(".addToButton").on('click', function (e) { 

    var $el = $(this).prev().find('option:selected'); 

}); 

然後可以使用$el.val()$el.text()分別獲得價值和文本。

相關問題