繁体   English   中英

如果具有锚链接,如何使手风琴面板打开?

[英]How to make accordion panel open if it has anchor link?

我有手风琴。 我的想法是,如果手风琴内部有一个锚点,那么如果与锚点有链接,则相关的手风琴面板将打开。

我基本上要问的是这个。

  <script>
  $(function() {
    $( "#accordion" ).accordion();
  });
  </script>


<div id="accordion">
  <h3>Section 1</h3><a name="myAnchor"></a>
  <div>
    <p>
    Mauris mauris ante, blandit et, ultrices a, suscipit eget, quam. Integer
    ut neque. Vivamus nisi metus, molestie vel, gravida in, condimentum sit
    amet, nunc. Nam a nibh. Donec suscipit eros. Nam mi. Proin viverra leo ut
    odio. Curabitur malesuada. Vestibulum a velit eu ante scelerisque vulputate.
    </p>
  </div>
  <h3>Section 2</h3>
  <div>
    <p>
    Sed non urna. Donec et ante. Phasellus eu ligula. Vestibulum sit amet
    purus. Vivamus hendrerit, dolor at aliquet laoreet, mauris turpis porttitor
    velit, faucibus interdum tellus libero ac justo. Vivamus non quam. In
    suscipit faucibus urna.
    </p>
  </div>

如果要基于url打开该锚,则该锚的href需要使用相同的哈希(如果要使用该哈希)。

var hash = window.location.hash;
var hashName = hash && hash.replace('#','');
$('.accordionModule .accordionPanel .content a').filter(function(){
    return this.hash === hash;
    // or
     return this.name === hashName;       
}).closest('.accordionPanel').find('.trigger').click();

要么

$('.accordionModule .accordionPanel .content a[href$=' + hash +']')
  .closest('.accordionPanel').find('.trigger').click();

因此,url = mywebsite.com#myanchor将匹配<a href="#myanchor"></a>

例如,如果我正确了解所需功能:

var userUrl = window.location.href.split( '#' )[1];
$('.accordionModule .accordionPanel .content a').each(function( index ) {
    if ($( this ).attr('name') == userUrl ) {
        var $theTarget = $("a[href='" + userUrl + "']"); //gets the anchor targeted
        //then open the corresponding panel
        $theTarget.closest('.accordionPanel').find('.trigger').click();
    }
});

希望这就是您的要求。 已经晚了,我累了。 大声笑

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM