2011-03-07 59 views
0

此代碼將檢查帶有'townid'的下拉列表是否具有中央選項,然後在all下拉列表的第一個選項之後放置中央。使用JQuery「選擇選項:第一個孩子」只適用於具有給定ID的元素?

var central = $('#townid option:contains("Central")'); 
    if(central){ 
    central.insertAfter('select option:first-child'); 
    } 

我的問題是:

如何我只是下拉列表之後添加它具有townid的ID?我的意思是這樣的:

var central = $('#townid option:contains("Central")'); 
    if(central){ 
    central.insertAfter('#townid select option:first-child'); 
    } 

例如:

<select id=townid> 
    <option value="5000">AL</option> 
    <option value="5001">NY</option> 
    <option value="5002">LA</option> 
    <option value="5003">NY</option> 
    <option value="5204">Central</option> 
    <option value="5024">FA</option> 
</select> 

<select id="someid"> 
    <option value="3002">Brooklyn</option> 
    <option value="6001">Manhattan</option> 
</select> 

這一過程後,他們應該看起來像:

<select id=townid> 
    <option value="5000">AL</option> 
    <option value="5204">Central</option> 
    <option value="5001">NY</option> 
    <option value="5002">LA</option> 
    <option value="5003">NY</option> 
    <option value="5024">FA</option> 
</select> 

<select id="someid"> 
    <option value="3002">Brooklyn</option> 
    <option value="6001">Manhattan</option> 
</select> 
+0

向我們顯示您的HTML。 – 2011-03-07 13:14:27

+0

@Mathias我給出了一個代碼示例。 – kamaci 2011-03-07 13:38:11

+0

這就是您想要使用普通JavaScript的原因嗎?因爲你不能讓選擇器工作? – 2011-03-07 13:41:14

回答

1

你剛剛搞砸了選擇器,因爲#townid是選擇標記。

var central = $('#townid option:contains("Central")'); 
    if(central.length === 1){ 
    central.insertAfter('#townid option:first-child'); 
    } 
+0

此答案無效。 'if(central)'應該是'if(central.length)'。 (與OP相同的錯誤) – 2011-03-07 13:18:00

+0

實際上,只要我想控制dropdownlist是否有一個名爲Central的選項 – kamaci 2011-03-07 13:31:16

+0

'select#townid'只應該是'#townid'。 – 2011-03-07 13:50:14

2

如何添加它僅僅是一個擁有下拉列表後ID爲townid

好吧,我會假設你的HTML看起來是這樣的:

<select id="townid"> 
    <option> 
    … 
    </option> 
</select> 

在這種情況下,你可以使用:

$('#townid option:contains("Central")').appendTo('#townid option'); 

如果裏面有#townid多個option元素而您只想選擇第一個,只需更改選擇器:

$('#townid option:contains("Central")').appendTo('#townid option:first'); 

在您的示例中,請勿使用if (central),而應使用if (central.length)

+0

@Matt你說得對'if'檢查是不需要的 - 我只是說如果你要使用它,至少應該確保它能正常工作。此外,jQuery不會「默默無聞」 - 即使沒有元素匹配,與使用if檢查相比,它仍然會做更多工作。 – 2011-03-07 13:22:27

+0

我有很多下拉列表,我只想爲城鎮id爲id的下拉列表執行此操作。我想在第一個選項後移動中央。它應該將中心移動到以cityid爲id的下拉列表。 – kamaci 2011-03-07 13:34:44

+0

因central.length建議而投票。 – kamaci 2011-03-18 18:03:49

相關問題