jQuery .attr () сбой Internet Explorer - PullRequest
3 голосов
/ 09 апреля 2010

Я впервые пишу здесь вопрос, так как обычно стараюсь найти решение самостоятельно. Однако этот вопрос, связанный с IE, просто сводит меня с ума.

Я использую плагин цикла jQuery на веб-сайте, который я сделал, и, чтобы заполнить заголовок div, я использую небольшую функцию, которая вызывается после загрузки изображения, которая использует " alt "атрибут изображения. Это, кажется, раздражает Internet Explorer, у которого нет времени для выполнения этой, казалось бы, такой сложной задачи, и, поскольку циклы слайд-шоу, он входит в бесконечный цикл и в конечном итоге дает сбой - чем новее версия, тем хуже сбой : старые IE просто отображают сообщение об ошибке, говорящее «Веб-страница не может быть отображена» , в то время как более новые (7 и 8) полностью приводят к краху системы.

Я понятия не имею, как решить или обойти это. Вот проблемный код.

function changeCaption() {
    var caption = $("img", this).attr("alt");
    $('#caption').fadeIn("slow").html(caption);
}

Заранее спасибо за любой указатель: я поражен тем, как что-то такое простое и общепризнанное (не сталкивалось ни с каким другим браузером, у которого были проблемы с этим), может вызвать такую ​​большую проблему. Я также где-то читал, что возможность удаленного сбоя браузера является серьезной проблемой:)

Ответы [ 3 ]

1 голос
/ 24 ноября 2010
<div id="slideShow_container">
    <!-- Place your slideshow stuff here -->
    <img id="myImage" alt="crap"  .../>
</div>

Затем используйте следующее для выбора изображения:

var s = $("#slideShow_container");

var caption = $("img", s).eq(0).attr("alt");  //selects first matched image

OR

var captions = [];
$("img", s).each(function(){
   captions.push($(this).attr("alt")); //array of captions
})

OR

var caption = $("#myImg", s),attr("alt");  //has to work for an explicit id
0 голосов
/ 24 апреля 2010

Я подозреваю, что $ ("img", this) не работает. Селектор img не проблема. Однако контекст «это» не может быть четко определен. Цель контекста - сузить пространство поиска, чтобы обеспечить лучшую производительность jQuery. Параметр context должен быть элементом DOM, документом или элементом jQuery. Я предлагаю что-то вроде следующего:

<div id="slideShow">

    <!-- put your slide show here -->

</div>

Затем используйте следующее для выбора изображения:

var slideShow = $("#slideShow");
var caption = $("img", slideShow);

Если это не работает, попробуйте добавить несколько предупреждений (или использовать консоль firebug) в код. Например, сразу после оператора заголовка вставьте предупреждение (заголовок). Это поможет вам определить, где это происходит.

0 голосов
/ 14 апреля 2010

Я не знаком с плагином для цикла, но может показаться, что вы можете попробовать это

function changeCaption() {
    $('#caption').fadeIn("slow").html(this.getElementsByTagName('img')[0].alt);
}

это должно работать, предполагая, что в содержится

только один img
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...