我有一个基于 twitter bootstrap 的导航菜单栏,它使用 scrollspy 来进行高亮显示。
这通过匹配链接中# 之后的值来工作(例如<a href="#foo">
,当<div id="foo">
滚动到视图中时)。非常基本,这里是文档:http: //twitter.github.com/bootstrap/javascript.html#scrollspy
当我在被监视的元素中引入指向引导模式对话框的链接时,我的问题就出现了。想象我有:
<ul class="nav">
<li><a href="#info">a link</a></li>
<li><a href="#demo" role="button" data-toggle="modal">modal</a></li>
<li><a href="#products">a different link</a></li>
</ul>
<p> .. my page .. </p>
<div id="info"><a name="info"></a>info on my product</div>
<div id="products"><a name="products"></a>a list of my products</div>
<div class="modal hide fade" id="demo" tabindex="-1" role="dialog">
<div class="modal-header">my header</div>
<div class="modal-body">some content</div>
<div class="modal-footer"><button>close</button></div>
</div>
<p> .. more page </p>
代表我的模态叠加层的 div 也使用 #id-of-target 格式作为其 href,但由于它包含在导航中(当然),因此当(隐藏的)div 处于视图中时,scrollspy 也会突出显示。根据页面上模式代码的位置,这会混淆菜单系统的突出显示。
我可以看到应该将scrollspy修改为仅链接到可见的项目(因此当“演示”滚动到视图中时不会激活)但无法弄清楚如何修改插件以仅在元素可见时触发,或者以其他方式覆盖事件。
谁能给我一些指示?