Нужна помощь с опцией jQuery UI Accordion navigationFilter - PullRequest
3 голосов
/ 19 февраля 2010

Я строю гармошку для навигации. Каждый раздел аккордеона имеет набор ссылок. Код запуска выглядит так:

$(document).ready(function() {
    $(".selector").accordion({
        collapsible: true,
        active: false,
        navigation: true
    });
});

Это все работало нормально, пока одна из ссылок в каждом наборе не была отредактирована так, чтобы указывать на один файл, назовите его foo.html. Так что теперь, если вы перейдете к файлу foo.html, location.href соответствует каждому разделу аккордеона (поскольку каждый раздел имеет ссылку на него), и это открывает все разделы, игнорируя назначение аккордеона.

Так что я почти уверен, что мне нужно использовать опцию navigationFilter, но я нашел в ней живой ад и не нашел примеров того, как построить функцию, связанную с ней.

Помоги мне, переполнение стека!

1 Ответ

6 голосов
/ 24 апреля 2010

Это старый вопрос, но я боролся с этой же проблемой сегодня, поэтому я решил ответить на этот вопрос для всех, кто ищет.

Я хотел использовать навигационный фильтр для аккордеона, чтобы сопоставить его с последним элементом моего маршрута (с использованием ASP.NET-MVC2). Я придумал следующее решение. Это не красиво, но это работает.

Мои ссылки выглядят так: http://site.com/Home/Details/IDSTRING

Фильтр соответствует любому location.href, который заканчивается на IDSTRING.

Возможно, вы захотите переместить код синтаксического анализа местоположения в другое место, чтобы он запускался только один раз для загрузки страницы, а не один раз для элемента accordion.

$("#accordion").accordion({ animated: false, autoHeight: false, collapsible: true, navigation: true, navigationFilter: function () {
    //Accordion NavigationFilter
    var locationHrefArray = location.href.split("/");
    var locationLastString = locationHrefArray[locationHrefArray.length - 1].toLowerCase();

    var sidebarHrefArray = this.href.split("/");
    var sideBarLastString = sidebarHrefArray[sidebarHrefArray.length - 1].toLowerCase();

    return locationLastString  == sideBarLastString;
} });
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...