如何将页面加载到某个部分并打开手风琴。
例如,我有一个垂直列出一堆手风琴的页面,是的,我知道给他们id的选项,在url页面中#accordion1将打开它并在那里滚动。那么,我在这里缺少什么样的JS,以便#accordion1加载在某个url路径上自动点击?
答案 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);
});
}
});