2011-03-07 22 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

相关问题