3

Это мой первый вопрос, когда я обычно пытаюсь найти решения самостоятельно. Этот, хотя, будучи проблемой IE, просто сводит меня с ума.jQuery .attr() crashing Internet Explorer

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

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

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

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

+0

Попробуйте использовать $ ('# imgId') Attr ('alt') –

+0

Откуда этот метод вызывается? Похоже, что он вызывается таким образом, что заставляет анимацию Fade стекать/переполнять IE. –

+0

@Teja: Я не могу проверить атрибут «alt» определенного изображения, потому что изображение находится в слайд-шоу, поэтому мне нужно его изменить. @Nick: Вы знакомы с плагином jQuery Cycle? Функция вызывается из опции «после:» слайд-шоу.В принципе это обратный вызов. – Sunyatasattva

ответ

-1

Я не знаком с заглушкой цикла в но, казалось бы, что вы могли бы попробовать это

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

он должен работать при условии, что есть только один img, содержащийся в

0

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

<div id="slideShow"> 

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

</div> 

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

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

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

1
<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 

ИЛИ

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

ИЛИ

var caption = $("#myImg", s),attr("alt"); //has to work for an explicit id