使用jQuery锚定到多个位置的链接

时间:2014-12-02 09:36:55

标签: javascript jquery

我正在使用这段代码:

小提琴: http://jsfiddle.net/2hmzcgqm/12/

现在我可以将#rugby用于手风琴中的某个span

我希望能够将其扩展为使用#football。有人可以帮忙吗? : - )

使用Javascript:

(function($) {
    var allPanels = $('.accordion > dd').hide();
    var allLinks = $('a.heading');
    $('.accordion > dt > a').click(function() {
        allPanels.slideUp();

        //Remove all 
        allLinks.removeClass('active');

        if ($(this).parent().next().is(":visible")) return false;
        $(this).parent().next().slideDown();

        //Add active class
        $(this).addClass('active');

        return false;
    });
    //$('.accordion > dt > a').first().trigger('click');

    function setAccordion() {
        // Get id from url
        // var url = window.location.pathname;
        // Test url
        var url = 'localhost:58000/gallery#rugby';
        var id = url.substring(url.lastIndexOf('#')); // This will give you #football
        var spanTag = $('.accordion').find(id); //#football span tag
        var parentTag = spanTag.closest('dd');

        //open the accordion
        allPanels.slideUp();
        parentTag.slideDown(); 
        parentTag.prev('dt').find('a.heading').addClass('active');
    }

    // Call the function
    setAccordion();
})(jQuery);

1 个答案:

答案 0 :(得分:0)

首先,我们无法为您编写完整的代码,这不是Stackoverflow的重点。 但是,我们可以帮助您向正确的方向搜索。

如果您想在网址中定义多个元素,可以看到以下示例Jquery reading several array parameters from url

然后从url中捕获params并创建一个数组,然后迭代打开或设置正确的折叠项目。

var arrayParams = [];
$.each(arrayParams, function(key, value) {

    // Get every item from the url and open the correct accordion item

});