Jquery UI Accordion проблема - автоматически расширяется следующий элемент списка, если он был удален - PullRequest
0 голосов
/ 02 апреля 2012

Извиняюсь за смутное название, но это довольно сложная проблема, чтобы объяснить в одной строке!

У меня есть аккордеон с несколькими элементами списка и элементами, которые расширяются при нажатии на каждый элемент списка. Я использую аккордеон с некоторыми функциональными возможностями ajax, которые фактически удаляют элемент списка при совершении действия, но мне не нужно объяснять это, самое важное, что нужно знать, это то, что в другом месте на странице у пользователя есть возможность удалить элемент списка в аккордеоне.

Проблема

Как только активный элемент списка был удален, следующий элемент списка все еще свернут. На самом деле мне нужно, чтобы следующий элемент списка автоматически расширялся, как только элемент списка над ним был удален.

Я посмотрел документацию по пользовательскому интерфейсу Jquery и не могу понять, как мне этого добиться.

Код

Это функция, которая скрывает li в аккордеоне:

function hideMatchBox(boxId,sourceKey){
    $('#'+boxId).animate({height: 0},1000,function(){
        var allHidden = true;
        $('#manualMatches li').each(function(index){
            if($(this).height() > 0)    {
                allHidden = false; // -failsafe
            }           
        });
        if(allHidden){
            $('#manualMatches').html('<p>All records are matched for your service.</p>');
        }
    });
}

Так что мне нужно как-то сказать аккордеону «перезагрузить» и развернуть второй сверху вниз после запуска этой функции hideMatchBox.

Одна проблема, связанная с этим, заключается в том, что нет гарантии, какой порядок li будет скрыт, поэтому я действительно думаю, что может быть лучше полностью удалить li, чем скрывать его? Или, возможно, переместить скрытый li в конец списка, а затем разверните первый li?

Надеюсь, это имеет смысл! Довольно сложно привести пример, но если понадобится, я это сделаю.

Любая помощь будет принята с благодарностью!

Спасибо

1 Ответ

0 голосов
/ 02 апреля 2012

В функции «удалить» вы добавляете что-то вроде:

var NextIndex = $(this).closest('.div').next();
$('#yourAccordian').accordion( "activate" , NextIndex );

Или вы можете использовать тот же индекс, если вы поместите его после удаления, в зависимости от того, какую функцию вы используете для удаленияэлемент аккордеона:)

Нужен код, чтобы дать конкретное решение.

...