открывающий аккордеон с хеш-тегом - PullRequest
2 голосов
/ 20 января 2012

Я пытаюсь открыть аккордеон на основе хеш-тега URL. Я нашел похожие ответы, но каждый использует свой аккордеон.

Сценарий HTML выглядит следующим образом:

<div class="contractable">
    <div class="header">
        <h1>Branding</h1>
        <a class="contractTrigger" href="#branded"></a>
    </div>
    <div id="branded" class="content">
        <div class="spacing">
            <p>text</p>
        </div>
    </div>
</div>

И JS:

$(function()
    {
        $('.contractable').each(function()
        {
            // Get natural height.
            var $contractable = $(this);
            var naturalHeight = $contractable.height();
            $contractable.data('naturalHeight', naturalHeight);             
            // Set default properties.
            $contractable.find('.content').addClass('closed').css(
            {
                'height': 0, 
                'overflow': 'hidden'
            });
        });

        $('.contractable .contractTrigger').click(function(e)
        {
            e.preventDefault();         
            var $trigger      = $(this);
            var $contractable = $trigger.parents('.contractable');
            var $content      = $contractable.find('.content'); 
            if($content.hasClass('open'))
            {
                $content.animate(
                {
                    'height': 0
                }, 300, function()
                {
                    $content.removeClass('open');
                    $content.addClass('closed');
                });

            }
                else
                {
                    $content.animate(
                    {
                        'height': $contractable.data('naturalHeight')
                    }, 300, function()
                    {
                        $content.removeClass('closed');
                        $content.addClass('open');
                    });
                }
            }
        });
    });

    function closeWindow() {
        parent.parent.GB_hide();
    }

Я могу достаточно легко получить хеш-тег с помощью var hash_value = window.location.hash.replace ('#', ''); но я застрял в том, как я могу сопоставить хеш с идентификатором div (так как будет несколько разных div), а затем открыть аккордеон. Любая помощь будет принята с благодарностью.

1 Ответ

0 голосов
/ 20 января 2012

После назначения события сделайте это для имитации клика:

$(window.location.hash).click()
...