这个让我难过。我在某些链接上使用“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 />
。我在元素之间添加了
以确保它不是解释问题,并且我得到完全相同的错误。
问题是$this.attr('for')
返回“undefined”,因此parent.position().left
会抛出“object is null or undefined”错误。
我用监视变量挖掘了一下,我可以看到选择器正在工作,并且$this
在这个上下文中确实选择了正确的元素并且确实设置了“for”属性......但是jQuery我觉得没找到它。
正如我所说,它在Firefox,IE9和IE8中运行得很好......只是不是IE7。想法?
供参考,我使用的是jQuery 1.6.2 ...
答案 0 :(得分:2)
我认为这是您的问题jQuery Bug Ticket
这是因为HTML中使用的“for”属性实际上是“htmlFor”,例如在label元素中。我怀疑jQuery.props中的任何特殊情况都是如此。 XML文档没有得到这种特殊处理,所以“for”就是“for”。我不确定这是值得修复,还是只是记录。
答案 1 :(得分:1)
而不是for
使用自定义属性;例如target_ele
。
你的编辑会对你大喊大叫,但它会奏效。