#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.