jQuery attr()没有在IE7中返回

时间:2011-07-28 17:54:07

标签: jquery internet-explorer-7 attr

这个让我难过。我在某些链接上使用“for”属性来标识他们应该采取行动的元素。在Firefox,IE9和IE8中,一切似乎都运行得很好......但IE7中断并返回“未定义”。

以下是我正在使用的jQuery代码的要点:

$(document.ready(function() {
    var editor_icons = $('.edit-button');

    editor_icons.each(function() {
        var $this = $(this),
            parent = $('#' + $this.attr('for'));

        var left = parent.position().left + parent.innerWidth() - 58 - 3,
            top = parent.position().top + 3;

        // ... you get the point ...
    });
});

应该采取的示例HTML元素:

<div id="content_wrapper">
    <a class="edit-button" href="javascript:void(0);" for="index_primary_content" />
    <div id="index_primary_content">
        ....
    </div>
</div>
  

在你指出它之前,我意识到锚不应该是自动关闭元素。我从我的应用程序发送的HTML是<a></a>,IE正在将其解释为<a />。我在元素之间添加了&nbsp;以确保它不是解释问题,并且我得到完全相同的错误。

问题是$this.attr('for')返回“undefined”,因此parent.position().left会抛出“object is null or undefined”错误。

我用监视变量挖掘了一下,我可以看到选择器正在工作,并且$this在这个上下文中确实选择了正确的元素并且确实设置了“for”属性......但是jQuery我觉得没找到它。

正如我所说,它在Firefox,IE9和IE8中运行得很好......只是不是IE7。想法?

供参考,我使用的是jQuery 1.6.2 ...

2 个答案:

答案 0 :(得分:2)

我认为这是您的问题jQuery Bug Ticket

  

这是因为HTML中使用的“for”属性实际上是“htmlFor”,例如在label元素中。我怀疑jQuery.props中的任何特殊情况都是如此。 XML文档没有得到这种特殊处理,所以“for”就是“for”。我不确定这是值得修复,还是只是记录。

答案 1 :(得分:1)

而不是for使用自定义属性;例如target_ele

你的编辑会对你大喊大叫,但它会奏效。