我有 2 页面。 page1.html
包含一系列链接& page2.html
有手风琴。
我的问题: 是否可以直接链接到手风琴中的某个部分?所以,如果我想访问凯尔特人,我如何创建 a)打开正确的手风琴选项卡 b)锚定到凯尔特人ID的链接
这是我目前page2.html
的代码:http://jsfiddle.net/7k9s1pg7/
HTML:
<dl class="accordion">
<dt><a href="" class="container heading">Soccer</a></dt>
<dd id="soccer">
<div id="manutd">
<p>Man Utd</p>
<p> </p>
<p> </p>
<p> </p>
<p> </p>
<p> </p>
</div>
<div id="celtic">
<p>Celtic</p>
<p> </p>
<p> </p>
<p> </p>
<p> </p>
</div>
</dd>
<dt><a href="" class="container heading">Formula 1</a></dt>
<dd id="formula1">
<div id="lewishamilton">
<p>Lewis Hamilton</p>
<p> </p>
<p> </p>
<p> </p>
<p> </p>
</div>
<div id="michaelschumacher">
<p>Michael Schumacher</p>
<p> </p>
<p> </p>
<p> </p>
<p> </p>
</div>
</dd>
</dl>
使用Javascript:
(function($) {
var allPanels = $('.accordion > dd').hide();
var allLinks = $('a.heading');
$('.accordion > dt > a').click(function() {
allPanels.slideUp();
allLinks.removeClass('active');
if ($(this).parent().next().is(":visible")) return false;
$(this).parent().next().slideDown();
$(this).addClass('active');
return false;
});
})(jQuery);
答案 0 :(得分:1)
在page1
链接中使用锚点page2.html#lewishamilton
并添加到您的JS代码
var hash = location.hash;
if (hash) {
var el = $(hash);
el.parent().slideDown();
el.parent().prev().find('a').addClass('active');
}
答案 1 :(得分:1)
我最近遇到了同样的问题。我通过在.htaccess中设置RewriteRule而不是使用前端代码来修复它。
我这样做是因为我的要求是拥有一个用户友好的URL以获得更好的用户体验。另一种选择是转到#
(location.hash
)。
我的想法是点击一个看起来用户友好的网址。类似的东西:
http://www.example.com/somepage/something
其中somepage
是带有手风琴的页面,something
是手风琴部分内按钮的ID。
在somepage
中,您需要编写代码,使用something
从onload
上的网址中读取window.location.pathname
,然后以编程方式点击something
按钮。
请注意,这可以解决您的手风琴问题,并通过呈现用户友好的网址提供良好的用户体验。