代码之家  ›  专栏  ›  技术社区  ›  ram

在ie-8和ff-3.5.8中设置只读属性时jquery不一致

  •  2
  • ram  · 技术社区  · 16 年前

    这是我在文档中的代码。就绪:

    var $inputs = mySelectors();
    $inputs.each(function() {
    $(this).attr("readonly", "true");
    
    });
    

    此代码适用于IE8,但不适用于FF3.5

    IE输出(如IE开发者工具栏所示) <input type="text" readOnly="readonly"..../>

    FF输出(与Firebug一起查看) <input type="text" readonly="">

    正确的设置方法是什么?

    $elem.attr("readonly","true");
    

    $elem.attr("readonly","readonly");
    

    $elem.attr("readOnly","readonly"); //note the uppercase O in Only
    

    看起来有个老毛病,但不确定它是否解决了。 http://osdir.com/ml/jquery-dev/2009-05/msg00115.html

    参考文献: http://api.jquery.com/attr/

    跨浏览器一致性:一些 属性的命名不一致 从浏览器到浏览器。此外, 一些属性的值是 报告前后不一致 浏览器,甚至跨版本 一个浏览器。.attr()方法 减少这种不一致。

    有没有办法解决这种跨浏览器不一致的问题?

    4 回复  |  直到 12 年前
        1
  •  1
  •   Pointy    16 年前

    如果是我的代码,我可能会将其设置为纯布尔值“true”:

    $elem.attr('readOnly', true);
    

    当你说它不起作用时,到底发生了什么?

    下面是一个脚本示例: http://gutfullofbeer.net/readonly.html

    这一个使用了我上面的方法,它在firefox中对我来说工作得很好。firebug显示这样的属性是因为它感觉像这样。

        2
  •  2
  •   ThiefMaster    13 年前

    在jquery 1.6中,获取/设置属性(而不是设置属性)的功能发生了根本性的变化。从jquery 1.6.1开始,仍然可以使用 .attr('readonly') ,但首选用法是

     $elem.prop('readonly', true);
    

    属性(反映元素的初始状态)和属性(表示dom节点的当前状态)的模糊性促进了这种变化。

    有关详细信息: http://blog.jquery.com/2011/05/12/jquery-1-6-1-released/

        3
  •  0
  •   Felix Kling    13 年前

    这应该是正确的方式:

    $elem.attr("readonly","readonly");
    

    这样,就可以创建有效的xhtml every attribute has to have a value element and attribute names have to be lower case . 对于大多数布尔属性,这意味着值与名称相同。

    也见 here :

    这是一个布尔属性,因此没有内容。在有效的xhtml write中 readonly="readonly"

    而且 this remark :

    一些html用户代理无法解释boolean属性,因为这些属性按照xml 1.0的要求以完整(非最小化)的形式出现。注意:这个问题不影响符合html 4的用户代理。包含以下属性:compact、nowrap、ismap、declare、noshade、checked、disabled、readonly、multiple、selected、noresize、defer。

    或者更改文档类型;)

        4
  •  0
  •   GPower    12 年前

    这是ie和ff语法之间令人恼火的细微差别之一。ie在ff不使用的情况下使用camel case。

    ie语法:readonly=“readonly”

    FF语法:readonly=“readonly”

    推荐文章