Javascript 如何根据元素内的锚来检测要显示的适当元素?
我在我的页面上使用了许多Twitter引导折叠组。每个组可能包含几个锚:Javascript 如何根据元素内的锚来检测要显示的适当元素?,javascript,jquery,html,twitter-bootstrap,twitter-bootstrap-2,Javascript,Jquery,Html,Twitter Bootstrap,Twitter Bootstrap 2,我在我的页面上使用了许多Twitter引导折叠组。每个组可能包含几个锚: <div class="accordion" id="accordion"> <div class="accordion-group"> <div class="accordion-heading"> <a href="#section1"></a><a class="accordion-toggle" data-toggle="co
<div class="accordion" id="accordion">
<div class="accordion-group">
<div class="accordion-heading"> <a href="#section1"></a><a class="accordion-toggle" data-toggle="collapse" data-parent="#accordion" href="#collapseOne">Section 1</a>
</div>
<div id="collapseOne" class="accordion-body collapse">
<div class="accordion-inner">
<p><a href="#section1-text1"></a>Section 1 - Text 1</p>
<p><a href="#section1-text2"></a>Section 1 - Text 2</p>
</div>
</div>
</div>
<div class="accordion-group">
<div class="accordion-heading"> <a href="#section2"></a><a class="accordion-toggle" data-toggle="collapse" data-parent="#accordion" href="#collapseTwo">Section 2</a>
</div>
<div id="collapseTwo" class="accordion-body collapse">
<div class="accordion-inner">
<p><a href="#section2-text1"></a>Section 2 - Text 1</p>
<p><a href="#section2-text2"></a>Section 2 - Text 2</p>
</div>
</div>
</div>
</div>
但我有两个问题:
somethingelse-text2
,即不包含节2
);如何查找锚点的父级折叠元素somethingelse-text2对于问题的第一部分,您可以使用以下内容:
var hash = window.location.hash;
if(hash){
var targetAnchor = $(hash + ",a[href='"+hash+"']");
if(targetAnchor.length > 0){
targetAnchor.closest(".collapse").collapse('show');
}
}
$('html, body').animate({
scrollTop: targetAnchor.offset().top
}, 2000);
对于第二部分,浏览器通常是以本机方式完成的,但在您的例子中,我非常确定这不会发生,因为锚隐藏在您的折叠块中。如果是,您可以手动滚动,如下所示:
var hash = window.location.hash;
if(hash){
var targetAnchor = $(hash + ",a[href='"+hash+"']");
if(targetAnchor.length > 0){
targetAnchor.closest(".collapse").collapse('show');
}
}
$('html, body').animate({
scrollTop: targetAnchor.offset().top
}, 2000);
基于此 谢谢,奇米。我唯一的问题是——第一个代码可以很好地处理
#section1-text1
等元素,但不能处理#collapseOne
等元素。看起来我应该以某种方式识别targetAnchor
类型(class=“accordio toggle”
?),或者查找parent
或者将collapseOne('show')
应用到元素本身。我已经用代码更新了答案,以处理\collapseOne
之类的元素。谢谢你的帮助!哎呀,我一会儿又做了同样的事。不客气。不过还有一件事,请记住散列中允许的一些特殊字符可能会破坏jQuery选择器。