我遇到的问题与此处提出的问题(Link to open jQuery Accordion?)几乎相同,但无法正确实现答案。
我试过这个解决方案,但它对我不起作用:
$("#accordion").accordion("activate", <?php echo $_GET['id']; ?>);
我有一个带有以下代码的 Jquery Accordion :
<script type="text/javascript">
$(function(){
// Accordion
$("#accordion").accordion({
header: "h3",
autoHeight: false,
navigation: true,
collapsible: true,
active: false
});
$(".exlnk").click(function(event){
window.location.hash=this.hash;
});
});
</script>
<script type="text/javascript">
function Click1(){
$("#accordion").accordion('activate' , 0)
}
function Click2(){
$("#accordion").accordion('activate' , 1)
}
</script>
简化的 HTML:
<h3><a class="exlnk" href="#about" title="About">About</a></h3>
<div>content blah blah</div>
<h3><a class="exlnk" href="#about" title="About">About</a></h3>
<div>Blah blah</div>
上面的代码允许我在主页上有链接来激活指定的面板。
exlnk 位在单击时为每个面板提供一个散列,我在本教程 (http://www.michaeljacobdavis.com/tutorials/statesavingaccordion.html) 中读到它会创建保存状态、可标记书签的面板。它分配哈希值,但不会激活面板或避免它们在重新加载时关闭。
我想要的是能够外部链接到http://www.mysite.com/page#anchor并让它在打开相应面板的情况下打开页面。我的能够从 Accordion 页面链接的解决方法非常有用!
非常感谢您的帮助...我已经阅读了本网站上所有与 Accordion 脚本相关的问答,但无法做出任何答案。我对 Jquery/Javascript 非常陌生,所以解释所有实现步骤以及每个建议代码的放置位置的答案会很棒。
最佳答案
您需要使用 .activate()
方法绑定(bind)您的服务器端代码,该方法可以让您根据作为索引或选择器传递的内容动态显示面板:
Activate a content part of the Accordion programmatically. The index can be a zero-indexed number to match the position of the header to close or a Selector matching an element. Pass
false
to close all (only possible withcollapsible:true
).
示例:
如果可能,不要传递 $_GET['id']
,而是传递与您要激活的元素匹配的选择器的名称。例如:
$("#accordion").accordion("activate", "#<?php echo $_GET['tab']; ?>");
$_GET['tab']
将是您传递的选择器的名称。当然,如果selector需要是class,把hash改成句点就行。
如果您想根据 http://www.mysite.com/page#anchor 这样的链接激活某些东西当您的页面加载并使用该哈希(这将是将激活您的面板的选择器的名称)代替 $_GET['id']
时,您需要使用 javascript 获取哈希
关于php - Jquery Accordion 激活带有 anchor 标记/url 哈希的特定面板,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8087525/