问问题
5710 次
4 回答
4
因为这是在初始值之后更改属性,它在技术上是一个属性,你应该使用$(this).prop()
而不是$(this).attr()
.
另外,尝试将值设置为true
而不是selected
$(this).prop('selected',true);
或者,您也可以设置select
元素的值:
$('.type_c').val(pageType);
于 2012-05-18T17:40:19.397 回答
0
我会验证您返回的内容是否正确评估。我使用以下代码制作了一个空白 HTML 页面。您可以看到所选选项的呈现方式取决于您将“pageType”设置为的任何字符串。
<html>
<head>
<script type="text/javascript" src="json2.min.js"> </script>
<script type="text/javascript" src="jquery-1.7.2.min.js"> </script>
<script type="text/javascript" src="jquery.cookie.js"> </script>
</head>
<script>
$(function(){
var pageType = 'Residential'; // returns either 'Business' or 'Residential'
$('.type_c option').each(function(){
$(this).removeAttr('selected');
});
$('.type_c option').each(function(){
if($(this).html() == pageType)
$(this).attr('selected','selected')
});
});
</script>
<body>
<select class="type_c" name="type_c"> // default selected is business
<option value="Business" selected="selected">Business</option>
<option value="Residential">Residential</option>
</select>
</body>
</html>
于 2012-05-18T17:50:18.570 回答
0
我以前也发生过类似的事情。Firefox 喜欢保存表单元素的状态,因此当页面重新加载时,它会显示上次会话的选择,即使它是通过 JavaScript 更改的。通常我必须从头开始加载页面(我转到 url 并按 enter,而不是重新加载)。
我不确定这是否会有所帮助,但它过去曾发生在我身上。
(我创建了第二个答案,因为这完全不同。)
于 2012-05-18T20:19:11.760 回答
0
如果有人和我有同样的问题,我认为这是 JQuery 版本。例如这个:
var SetValue = function(dropDownElement, valueToSet){
dropDownElement.after("<br> Set to: "+valueToSet);
dropDownElement.find("option").removeAttr("selected");
unitsTypeControl.find("option").filter(function() {
return this.text === valueToSet;
}).attr('selected', true);
}
https://codepen.io/RolandoRetana/pen/GQrByQ
适用于 IE 但不适用于 Chrome,升级到最新版本的 jquery 后,它适用于两者。
于 2018-02-09T23:54:17.053 回答