在网址上加载活动更改

时间:2018-06-13 13:04:23

标签: javascript jquery html url accordion

如何将页面加载到某个部分并打开手风琴。

例如,我有一个垂直列出一堆手风琴的页面,是的,我知道给他们id的选项,在url页面中#accordion1将打开它并在那里滚动。那么,我在这里缺少什么样的JS,以便#accordion1加载在某个url路径上自动点击?

2 个答案:

答案 0 :(得分:0)

我们首先需要等到整个页面加载,以防您的手风琴尚未完全初始化。

然后我们从URL中获取哈希值,以便我们检查它是否与我们想要的匹配。另外,我们使用switch语句来检查已知值,因为我们不能信任任何输入。

我们通过它的ID找到相关的手风琴,如果您的代码没有,则需要添加。

// Trigger when the whole document loads
window.onload = function(){
    // Grab the hash out of the URL
    switch(window.location.hash){
        case "#accordion1":
            // Click the relevant item located by its ID
            document.getElementById("accordion1ID").click();
            break;
        case "#accordion2":
            document.getElementById("accordion2ID").click();
            break;
    }
}

答案 1 :(得分:0)

所以,这行得通...因此,如果url以id为单位的任何元素作为目标,它将滚动到该元素并执行操作。在这种情况下,它将打开手风琴(添加和删除一个类)

(function($){
$(window).load(function(){
var et_hash = window.location.hash;
if(window.location.hash) {
$( '.et_pb_toggle' + et_hash )
.removeClass('et_pb_toggle_close')
.addClass('et_pb_toggle_open')
}
});
})(jQuery)

document.addEventListener('DOMContentLoaded', function(event){ 

    if (window.location.hash) {
        // Start at top of page
        window.scrollTo(0, 0);

        // Prevent default scroll to anchor by hiding the target element
        var db_hash_elem = document.getElementById(window.location.hash.substring(1));
        window.db_location_hash_style = db_hash_elem.style.display;
        db_hash_elem.style.display = 'none';

        // After a short delay, display the element and scroll to it
        jQuery(function($){
            setTimeout(function(){
                $(window.location.hash).css('display', window.db_location_hash_style);
                et_pb_smooth_scroll($(window.location.hash), false, 800);
            }, 700);
        });     
    }
});