2010-09-03 3 views
0

У меня проблемы с jquery accordion. Это кажется довольно сложным.javascript/Jquery Accordion не работает правильно

Первый аккордеон, проект1, отлично работает (спасибо Nick Craver), но 2 & 3-й и так далее не работает. Я не знаю, должен ли я использовать .filter.

Вот код & пример страницы: http://jsfiddle.net/THjgV/2/

Спасибо.

ответ

1

Поскольку все они имеют разную высоту, вам необходимо хранить и использовать каждую высоту самостоятельно, я предлагаю использовать для этого $.data() и .data(). Также измените свои идентификаторы на классы, поскольку они должны быть уникальными.

$('.slickbox').hide().each(function() { 
    $.data(this, 'height', $(this).height()); 
}); 
$('.more a').toggle(function() { 
    var sb = $(this).parent().prev('.slickbox').slideDown(3200); 
    $('html, body').animate({ 
     scrollTop: '+=' + sb.data('height') 
    }, 3200); 
    return false; 
}, function() { 
    var sb = $(this).parent().prev('.slickbox').slideUp(3200); 
    $('html, body').animate({ 
     scrollTop: '-=' + sb.data('height') 
    }, 3200); 
    return false; 
}); 

You can test it out here, это перебирает и сохраняет высоту каждого .slickbox (теперь используя класс!) И сохраняет его. При щелчке по каждой ссылке он специально переключает элемент class="slickbox", который предшествует ему, и использует значение 'height' для прокрутки.

+0

Черт бык! Ты сделал мой день :) Еще раз спасибо! PS: Вы научили меня действию аккордеона JQuery сегодня. благодаря – Martin