【问题标题】:Jquery Accordion to activate specific panels with anchor tags/url hashJquery Accordion 使用锚标签/url 哈希激活特定面板
【发布时间】:2011-12-26 14:46:25
【问题描述】:

我遇到了与此处提出的问题 (Link to open jQuery Accordion?) 几乎相同的问题,但无法正确实施答案。

我尝试了这个解决方案,但它对我不起作用:

$("#accordion").accordion("activate", <?php echo $_GET['id']; ?>);

我有一个带有以下代码的 Jquery 手风琴:

<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,并让它在相应面板打开的情况下打开页面。我能够从手风琴页面链接的解决方法非常有用!

非常感谢您提供的任何帮助...我已阅读此站点上与手风琴脚本相关的所有问答,但无法回答任何问题。我对 Jquery/Javascript 非常陌生,所以解释所有实施步骤以及放置每个建议代码的位置的答案会很棒。

【问题讨论】:

  • 看看$("#accordion").accordion("activate", &lt;?php echo $_GET['id']; ?&gt;);生成的JS片段会很有用
  • 也许这就是我所缺少的——在我尝试使用该 sn-p 时,它只是放在我的手风琴代码中,没有以任何其他方式引用或调用。
  • 嘿,我刚刚在这里为你做了一个快速的手风琴:link 我想这是根据你的需要。
  • 感谢您的示例。这就是我目前的运作方式——我希望发生的情况是,使用您的示例,如果我输入weblopper.com.au/accordian/index.html#second,页面将在第二个手风琴面板打开的情况下加载。

标签: php javascript jquery hyperlink accordion


【解决方案1】:

您需要将您的服务器端代码与.activate() 方法联系起来,该方法应该允许您根据作为索引或选择器传递的内容动态显示面板:

以编程方式激活 Accordion 的内容部分。指数 可以是一个零索引的数字,以匹配标题的位置 关闭或匹配元素的选择器。通过false 关闭所有(仅 可以使用 collapsible:true )。

示例:

如果可能,不要传递$_GET['id'],而是传递与您要激活的元素匹配的选择器的名称。例如:

$("#accordion").accordion("activate", "#<?php echo $_GET['tab']; ?>");

$_GET['tab'] 将是您传递的选择器的名称。当然,如果选择器需要是类,只需将hash改为句点即可。

如果您想根据http://www.mysite.com/page#anchor 之类的链接激活某些内容,您需要在页面加载时使用 javascript 获取哈希值并使用该哈希值(这将是激活面板的选择器的名称) 代替$_GET['id']

【讨论】:

  • 非常感谢您的回答!听起来像我要找的东西,但我不知道如何执行 - 你有我的代码更改的示例吗?
  • 不客气。我已经编辑了我的答案以提供一个例子:)
  • 嗯...对于代码 $("#accordion").accordion("activate", "#");它不是必须是面板的 id 才能工作吗?例如,要激活第一个面板,代码是 $("#accordion").accordion("activate", "0");
  • 哦,是的,你当然可以使用面板的索引而不是选择器(当然没有引号),但我只是想表明你可以传递一个选择器并使用它来激活面板而不是使用元素索引。此外,您所说的使用面板的 id 以使其工作:如果您使用数字,则不是您使用的 id。它是元素的索引。如果您有 3 个选项卡,则索引为 0、1 和 2。希望对您有所帮助!
猜你喜欢
  • 2020-12-14
  • 1970-01-01
  • 2012-05-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-04-13
  • 2010-12-02
  • 1970-01-01
相关资源
最近更新 更多