今天遇到一个很有意思的问题,用jquery操作select列表框,动态将某个option的selected属性赋为"selected",在火狐和chrom下都能实现其赋值,但是在火狐下select列表框的文本并没有变化,在chrome下是有变化的,chrome下是正确的结果,也是我想要的结果。网上查了一下,原来处理让option选中的方法有问题。
html代码
<select id="dict1">
<option class="dict1_all" value="0">全部</option>
<option value="1">root</option>
<option value="8">root1</option>
<option value="9">root2</option>
</select>
<select id="dict2">
<option class="dict2_all" value="0">全部</option>
<option style="display: none;" class="fid_1" value="2">子类1</option>
<option style="display: none;" class="fid_1" value="3">子类2</option>
<option style="" class="fid_8" value="4">子类3</option>
</select>
JS代码
$('#dict1').change(function() {
var dictId = $(this).val();
//下面这种方法,再FF下赋值是成功的,但是select列表框的文本不会变化,在chrome下会变化
//$('#dict2 .dict2_all').attr('selected', 'true');
//下面这种方法,可以使select列表框的文本发生变化
$('#dict2').val(0);
if(dictId !== 0) {
$('#dict2').children().not('.dict2_all').hide();
$('#dict2 .fid_' + dictId).show();
}
});