2012-10-05 43 views
3

我有一個導航菜單欄基於twitter引導,使用scrollspy爲hightlighting。使用模式覆蓋與twitter引導scrollspy - 不正確的激活

這是通過匹配鏈接中#後面的值來工作的(例如<a href="#foo"><div id="foo">滾動到視圖中時)。很基本,這裏的doco: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> 

代表我的模式疊加也使用#ID-的目標格式的HREF,但因爲它是包括(當然)的資產淨值中,然後scrollspy還強調,當(股利隱藏)div在視圖中。根據模式代碼在頁面上的位置,這會混淆菜單系統的突出顯示。

我可以看到,scrollspy應該被修改爲只鏈接到可見(因此當「demo」滾動到視圖中時不會激活)的項目,但無法解決如何修改插件以僅觸發if該元素是可見的,或者以其他方式覆蓋事件。

任何人都可以給我一些指針?

回答

3

有趣的是,如何輸入一個問題有時會讓你以正確的方式思考解決問題,而只是在思考問題而已。

,使這項工作,我修改引導的scrollspy組件,以便它測試的目標是隱藏的,撈出激活例程(也不會引發激活事件,因爲它是不活躍)

這裏是:在我附近的1432行(+ if ..

, activate: function (target) { 
    var active 
     , selector 

    if (target.is(":hidden")) return 

    this.activeTarget = target