Почему раздел jQuery accordion не активируется в IE 8?

#jquery #internet-explorer-8 #jquery-ui-accordion

#jquery #internet-explorer-8 #jquery-ui-accordion

Вопрос:

Я использую форму, состоящую из нескольких частей, в jQuery UI accordion. Когда пользователь нажимает «далее», открывается следующий раздел, который еще не был отправлен. В IE 8 он работает неправильно — следующий раздел не открывается. У кого-нибудь есть какие-либо мысли о том, что я могу здесь сделать, чтобы обеспечить совместимость с IE 8?

ОТРЕДАКТИРОВАННЫЙ ОТВЕТ НА ВОПРОС: Используя инструменты разработчика IE, я обнаружил, что код прерывается при «next = i». В ошибке указано «Объект не поддерживает это свойство или метод». Есть мысли относительно того, что я здесь делаю не так?

 $(":submit").live('click', function() {
whichButton =  $(this).val();
})

$("#selection-form").validate({
   submitHandler: function(form) {
     var acc = $("#accordion");
//...
   complete: function(e) {
     $('#selection-information').attr('state', 1);
     acc.children('.step').each(function(i){
         if($(this).attr('state') == 0) 
            {
        next = i;
        return false;
        }
    })
        if(whichButton=='complete'){
         acc.accordion('activate',next);            
}

//...
  

ОБНОВЛЕНИЕ: Проблема, похоже, заключается в попытке активировать с помощью «next», а не с определенным номером индекса (хотя «next» должен идентифицировать индекс для открытия). Если я заменю «next» фактическим номером индекса, этот раздел откроется. Есть мысли о том, как исправить эту конкретную проблему?

Ответ №1:

Я столкнулся с такой же проблемой. IE очень требователен к правильному html и к тому, чтобы убедиться, что внутри вашего аккордеона нет ничего вне <h3></h3><div></div> структуры, например, у вас есть это:

 <h3>a header</h3>
<div>some content</div>
<h3>another header</h3>
<div>some more content</div>
  

это сработает, но это не:

 <h3>a header</h3>
<div>some content</div>
<span>extra stuff</span>
<h3>another header</h3>
<div>some more content</div>
  

Все это было бы внутри любого элемента, который вы вызываете .accordion().

Комментарии:

1. Спасибо. К сожалению, я немного изменил структуру <div></div><div></div><h3></h3><div></div>. Удалось ли вам найти какие-либо обходные пути, или мне просто нужно переделать свой код, чтобы соответствовать требуемой структуре?

2. ДВАЖДЫ Я собирал модуль в Dot Net Nuke, и у меня был div полностью за пределами accordion, и это вызывало ошибку; простой тег p тоже

Ответ №2:

По-видимому, произошел конфликт или проблема с использованием имени «next». Я изменил «next» на «nxt» внутри функции, и accordion теперь работает в IE8.