我正在使用Sohtanaka的jQuery切换效果来“显示”和“隐藏”内容。
这是jQuery:
$(document).ready(function(){
//Hide (Collapse) the toggle containers on load
$(".toggle_container").hide();
//Switch the "Open" and "Close" state per click then slide up/down (depending on open/close state)
$("h2.trigger").click(function(){
$(this).toggleClass("active").next().slideToggle("slow");
return false; //Prevent the browser jump to the link anchor
});
});
这是我的HTML:
<h2 class="trigger"><a href="#test1">Test 1</a></h2>
<div class="toggle_container">
<div class="block">
<h3>Content Header</h3>
<p>content</p>
</div>
</div>
<h2 class="trigger"><a href="#test2">Test 2</a></h2>
<div class="toggle_container">
<div class="block">
<h3>Content Header</h3>
<p>content</p>
</div>
</div>
<h2 class="trigger"><a href="#test3">Test 3</a></h2>
<div class="toggle_container">
<div class="block">
<h3>Content Header</h3>
<p>content</p>
</div>
</div>
一切都按预期工作。
我想知道需要修改哪些内容,以便在相应的锚点位于网址末尾时显示特定的容器?
e.g。如果我的网址是“www.domain.com/content/#test2”,我希望显示容器“测试2”,并且“测试1”和“测试3”保持隐藏状态。
非常感谢。
答案 0 :(得分:2)
您应该可以将此功能添加到您的代码中,如下所示:
$(document).ready(function() {
$(".toggle_container").hide();
$("h2.trigger").click(function() {
$(this).toggleClass("active").next().slideToggle("slow");
return false; //Prevent the browser jump to the link anchor
});
$("a[href='" + window.location.hash + "']").parent(".trigger").click();
});
答案 1 :(得分:0)
当网址为#test2
时,window.location.hash
将保留值http://www.domain.com/content/#test2
。这是您应该在jQuery属性选择器中使用的,用于在ready处理程序中找到<a>
元素:
$(document).ready(function() {
...
if (window.location.hash) {
$('h2.trigger + .toggle_container').hide(); // Hide all...
$('h2.trigger').has("a[href='" + window.location.hash + "']").next('.toggle_container').show(); // ... but show one
}
});
(Demo。必然存在更优雅的实现。)
<强>更新强>
我的第一个答案在很多方面都是错误的:-S
答案 2 :(得分:0)
$(document).ready(function() {
$('a').each(function() {
if($(this).attr('href') == window.location.hash) {
$(this).parent(".trigger").click();
}
});
);