jQuery代码removeAttr问题

时间:2011-04-12 23:21:35

标签: jquery attributes

<input id="mnc" type="text"/>
<input type="text" id="selected" />

$('#mnc').val().length ? $('#selected').attr({
    'size': $('#mnc').val()
}) : $('#selected').removeAttr('size');

这在Firefox 4中出错。

  

指数或大小为负或更高   比允许的金额“代码:”1

即使属性不存在,其他浏览器也能够处理removeAttr。我正在做的是检查输入#mnc是否为空,然后从#selected删除属性大小是否存在。

检查http://jsfiddle.net/zFCtU/1/

3 个答案:

答案 0 :(得分:2)

这是Firefox中的一个错误,请参阅jQuery bug reportjQuery Version >= 1.6应该有解决方法。

编辑:可悲的是,修复版将以1.6发布(不是我之前写的1.5.2)。 Firefox 4.0.1应该在firefox端修复它。您必须决定期望安装4.0.1必须自己应用补丁。

答案 1 :(得分:1)

这是一个要看的片段,它正在运作

$('#mnc').change(function () {
    if ($(this).val().length > 0) {
        $('#selected').attr({'size': $(this).val().length});
    } else {
        $('#selected').removeAttr('size');
    }
});

答案 2 :(得分:0)

为什么不首先尝试设置然后取消设置,以确保它始终存在?

$('#selected').attr('size','').removeAttr('size');