请解释我如何更改选项的“选定”属性?
例如。:
<select id="lang_select">
<option value="en" selected="selected">english</option>
<option value="ar">العربية</option>
<option value="az">azərbaycanlı</option>
<option value="bg">български</option>
<option value="ca">català</option>
<option value="cs">český</option>
<!-- some data cut -->
</select>
因此,如果我更改下拉列表值,则html-data中没有任何更改。
为什么?
只有当我尝试使用jQuery强制重新加载属性时它才有效。
$(document).on('change',"select",function(){
var i = $(this)[0].selectedIndex;
var ch = $(this).children().each(function(index){
$(this).prop('selected',index == i);
if (index == i) {
$(this).attr('selected','selected');
} else {
$(this).removeAttr('selected');
}
});
});
为什么?我怎么能避免这个?是否可以使用纯HTML更改“选定”?
编辑
我希望在html标签中有这个属性,因为我需要在将来保存和恢复这个html代码的一部分。
更新,替换 .attr("selected", true)
对于 .prop("selected", true)
注意,价值 selected
属性返回 true
要么 false
不是 "selected"
。
尝试使用选择器 $("option[value=" + this.value + "]", this)
,设置属性 selected
至 true
, .siblings()
去除 selected
属性来自 option
未选中的
$(document).on("change","select",function(){
$("option[value=" + this.value + "]", this)
.attr("selected", true).siblings()
.removeAttr("selected")
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.11.1/jquery.min.js"></script>
<select id="lang_select">
<option value="en" selected="true">english</option>
<option value="ar">العربية</option>
<option value="az">azərbaycanlı</option>
<option value="bg">български</option>
<option value="ca">català</option>
<option value="cs">český</option>
<!-- some data cut -->
</select>
更新,替换 .attr("selected", true)
对于 .prop("selected", true)
注意,价值 selected
属性返回 true
要么 false
不是 "selected"
。
尝试使用选择器 $("option[value=" + this.value + "]", this)
,设置属性 selected
至 true
, .siblings()
去除 selected
属性来自 option
未选中的
$(document).on("change","select",function(){
$("option[value=" + this.value + "]", this)
.attr("selected", true).siblings()
.removeAttr("selected")
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.11.1/jquery.min.js"></script>
<select id="lang_select">
<option value="en" selected="true">english</option>
<option value="ar">العربية</option>
<option value="az">azərbaycanlı</option>
<option value="bg">български</option>
<option value="ca">català</option>
<option value="cs">český</option>
<!-- some data cut -->
</select>
它并没有改变 html
本身但它确实改变了它的价值 select
$('select').change(function(){
$('#result').html($(this).val());
}).trigger('change');
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<select id="lang_select">
<option value="en" selected="selected">english</option>
<option value="ar">العربية</option>
<option value="az">azərbaycanlı</option>
<option value="bg">български</option>
<option value="ca">català</option>
<option value="cs">český</option>
<!-- some data cut -->
</select>
<hr />
<div id="result"></div>
使用 val()
方法。所以在你的情况下, $("#lang_select").val('en');
选择英语选项。顺便说一下,如果你想要选择第一个选项,你就不需要了 selected="selected"
。默认情况下,会自动选择第一个选项。