2012-04-18 53 views
1

上一个新的我有以下几点:删除选定的属性,并添加选择的元素

HTML

<select class="dropDownList" id="PersonFunction"> 
    <option value="">Choose</option> 
    <option value="1">Vice President</option> 
    <option value="2">Director</option> 
    <option value="3">Secretary</option> 
    <option value="4">Clerk</option> 
</select>​ 

JS

$("#PersonFunction").change(function() {  
    $("option", this).eq($(this).val()).attr('selected', 'selected'); 
});​ 

所以指数的变化后,我设置选定的属性和它的作品,但在用户再次改变索引后,我又设置了另一个选定的属性e不同的价值,我不想那样。

<select class="dropDownList" id="PersonFunction"> 
    <option value="">Choose</option> 
    <option value="1" selected="selected">Vice President</option> 
    <option value="2" selected="selected">Director</option> 
    <option value="3">Secretary</option> 
    <option value="4">Clerk</option> 
</select> 

我该如何首先删除选定的属性,如果存在然后添加一个?

的jsfiddle这里:http://jsfiddle.net/mgrcic/HCrS2/

回答

8
$('#PersonFunction').on('change', function() { 
    $('option:selected', this).attr('selected',true).siblings().removeAttr('selected'); 
}); 

DEMO

+0

它选择所有,它不起作用。 – 2012-04-18 08:45:29

+0

@plurby它会工作 – thecodeparadox 2012-04-18 08:54:30

+0

现在它的工作。谢谢。 – 2012-04-18 08:59:21

4

没有必要更新selected编程参数,因为浏览器会自动知道选择哪个元素。 selected属性仅用于在页面加载时设置默认选项。

为了获得当前选定的选项,只需使用以下命令:

var selectedValue = $("#PersonFunction option:selected").val(); 

Example Fiddle


更新

如果出于某种原因你想设置一个selected属性(正如我可以理解的,你正在动态地创建另一个表单),试试这个:

$("#PersonFunction").change(function() { 
    $("option", $(this)).removeAttr("selected"); 
    $("option:selected", $(this)).attr("selected", true); 
});​ 
+0

是)在形式动态创建,我没有选定的属性,所以帖子不起作用。我知道如何获得价值,并没有要求这样做。 – 2012-04-18 08:29:08

+0

好的,看看我的更新 - 虽然我还没有完全理解你用来需要这个的逻辑。 – 2012-04-18 08:33:02

+1

您可能想在另一个问题中发布整个代码,包括动态表单创建和发布,因为我不认为这是实现您所需的最佳方式。没有更多的细节,很难说。 – 2012-04-18 08:35:01

-1

这会提醒您选中的文本。改变的.text()来.VAL(),如果你希望它因为在递交I存储DIV用户点击(这里我所有的领域后,拿起选项值,而不是

$("#PersonFunction").change(function() { 
    var selected = $("option:selected").text(); 
    alert(selected); 
}); 
相关问题