Это меня поставило в тупик. Я использую атрибут «for» в некоторых ссылках, чтобы определить элемент, на который они должны воздействовать. В Firefox, IE9 и IE8 все работает нормально, но IE7 ломается и возвращает «undefined».
Вот суть кода 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
выдает ошибку "объект нулевой или неопределенный".
Я немного покопался в переменных наблюдения, и я вижу, что селекторы работают, и $this
в этом контексте выбирает нужные элементы и имеет установленный атрибут "for" ... но jQuery isn ' я думаю, что нашел его.
Как я уже сказал, он отлично работает в Firefox, IE9 и IE8 ... только не в IE7. Идеи?
Для справки я использую jQuery 1.6.2 ...