火狐31.0 jquery使用attr操作option选中状态时错误

错误描述:jquery动态改变select下option的选中状态,会造成option有selected属性的时候,仍显示选中的是第一条option。这种写法为什么不行?
版本:火狐31.0+jQuery v1.10.2

操作方法:点击2,3,4,显示正常,再点击任意button2或3,显示1

代码:
<select class="select" autocomolete="off">
<option value="1">1</option>
<option value="2">2</option>
<option value="3">3</option>
<option value="4">4</option>
<option value="5">5</option>
</select>
<button class="op">2</button>
<button class="op">3</button>
<button class="op">4</button>
<script>
$(function(){
$('.op').click(function(){
var id=$(this).text();
$(".select option[value!='"+ id +"']").attr('selected',false);
$(".select option[value='"+ id +"']").attr('selected',true);
})
})
</script>

firefox确实与IE的动作不一样,可以通过以下方法解决。。。

<select class="select" autocomolete="off">
    <option value="1">1</option>
    <option value="2">2</option>
    <option value="3">3</option>
    <option value="4">4</option>
    <option value="5">5</option>
</select>
<button class="op">2</button>
<button class="op">3</button>
<button class="op">4</button>
<script>
    $(function(){
        $('.op').click(function(){
            var id=$(this).text();
            $('.select option').each(function() {
                this.removeAttribute('selected');
            });
            $(".select option[value='"+ id +"']").attr('selected',true);
        })
    })
</script>

温馨提示:内容为网友见解,仅供参考
第1个回答  2014-09-17
您好!很高兴为您答疑!

  jquery端get设置dataType 为 html----浏览器会对返回的内容进行页面渲染
  服务端设置返回类型为text----浏览器不会对返回的内容进行渲染,将html的内容文本原封不动的显示在浏览器上
    您可以在火狐社区了解更多内容。希望我的回答对您有所帮助,如有疑问,欢迎继续在本平台咨询。

火狐31.0 jquery使用attr操作option选中状态时错误
$('.select option').each(function() { this.removeAttribute('selected'); }); $(".select option[value='"+ id +"'

jquery无法连续控制select多选框选中\/取消
\/\/记的把之前的选中的selected属性移除掉function btnClick(id){ $("#sel1 option[value="+id+"]").attr("selected","selected"); $("#sel1 option[value="+id+"]").siblings().removeAttr("selected");}

jQuery中attr和prop在修改checked属性时的区别
首先,window或document中使用.attr()方法在jQuery1.6中不能正常运行,因为window和document中不能有attributes。它们包含properties(比如:location或readyState),必须使用.prop()方法操作或简单地使用javascript原生的方法。在jQuery1.6.1中,window和document中使用.attr()将被自动转成使用.prop,而不是抛...

jQuery怎么根据某个特定的值动态让select下的option选中
("#select_id option[value='1']").removeAttr("selected");根据值去除选中状态 $("#select_id option[value='"+msg.data.categoryId+"']").attr("selected","selected");根据值让option选中 \/\/设置下拉框index属性为5的选项 选中 $("#selectID").get(0).selectedIndex = 5; ...

jquery怎么获取select选中的值
('#test option:selected').val();\/\/设置值为2的option为选中状态 ('#test').attr('value','2');\/\/设置最后一个option为选中 ('#test option:last').attr('selected','selected');("#test").attr('value' , $('#test option:last').val());("#test").attr('value' , $('#...

JqueryAjax请求文件下载操作失败怎么处理
但只是读取而已,是无法执行的,说白点就是js无法调用到浏览器的下载处理机制和程序。二、解决方案1)可以使用jquery创建表单并提交实现文件下载;var form = $("<form>");form.attr("style","display:none");form.attr("target","");form.attr("method","post");...

jQuery版本升级有哪些注意事项
这些现在也都是不正确的!正确的做法应该是$('input').prop('checked', true); \/\/把单选框设为选中状态$('input').prop('checked'); \/\/获取单选框是不是被选中了,返回true或false这是从jQuery 1.6版本开始使用的写法。如果设置disabled和selected属性,也是使用prop方法。那到底什么时候使用attr方法呢?两者的...

JS中attr和prop属性的区别
window或document中使用.attr()方法在jQuery1.6中不能正常运行,因为window和document中不能有attributes。它们包含properties(比如:location或readyState),必须使用.prop()方法操作或简单地使用javascript原生的方法。 在jQuery1.6.1中,window和document中使用.attr()将被自动转成使用.prop(还没试过)。

怎么用js动态 设置select中的某个值为选中值
我们使用javascript实现js动态设置select中的某个值为选中值,操作如下:使用javascript实现:<!DOCTYPE html PUBLIC "-\/\/W3C\/\/DTD XHTML 1.0 Transitional\/\/EN" "http:\/\/www.w3.org\/TR\/xhtml1\/DTD\/xhtml1-transitional.dtd"> <html xmlns="http:\/\/www.w3.org\/1999\/xhtml"> <head> <meta ...

jQuery中attr和prop在修改checked属性时的区别
attributes。它们包含properties(比如:location或readyState),必须使用.prop()方法操作或简单地使用 javascript原生的方法。在jQuery1.6.1中,window和document中使用.attr()将被自动转成使用.prop,而不是 抛出一个错误。其次,checked,selected和前面提到的其它boolean attributes,因为这些attributes和其相应...

相似回答