2012-09-17 47 views
1

我已經添加了一些JQuery選項卡,每當我點擊其中一個鏈接的ID被附加到URL,它跳轉到網址,這真的很煩人。我已經尋找一些修復,如設置超時和停止回發,但似乎沒有工作,有沒有人有任何想法?Jquery選項卡:如何停止點擊跳轉?

<script type="text/javascript"> 

     $(document).ready(function() {   

      $('.moo').click(function (evt) { 
      // stops from submitting the form 
      evt.preventDefault(); 
      return false; 
     }); 


     $("#tabs").tabs(); 

     setTimeout(function() { 
      if (location.hash) { 
       window.scrollTo(0, 0); 
      } 
     }, 1); 

    }); 

</script> 




<div id="tabs"> 
    <ul> 
     <li><a href="#tabs-1" class="moo" onclick="return false;" >Nunc tincidunt</a></li> 
     <li><a href="#tabs-2" class="moo" onclick="return false;" >Proin dolor</a></li> 
    </ul> 

    <div id="tabs-1"> 
     <uc1:PrizeDrawMiniListControl ID="PrizeDrawMiniListControl1" runat="server" /> 
    </div> 

    <div id="tabs-2"> 
     <uc2:MostViewedControl ID="MostViewedControl1" runat="server" /> 
    </div> 
</div> 

編輯:

鏈接不回發,它只是滾動

+0

我通常使用href =「javascript:void(0)」來解決此問題。您可以使用onClick進行試用。不知道這將解決這個問題。 – Nick

+0

[Works for me](http://jsfiddle.net/nV23h/1/)沒有任何黑客入侵。如果您的JavaScript錯誤_elsewhere_阻止了選項卡小部件的啓動,您可能會遇到上述問題。 –

回答

3

http://jsfiddle.net/3au7K/其現在工作的罰款。

你的JavaScript函數改成這樣

$(document).ready(function() {   

     $('.moo').click(function (evt) { 
     // stops from submitting the form 
     evt.preventDefault(); 
     return false; 
    }); 


    $("#tabs").tabs(); 

    // This will work for dynamically added tabs as well 

    $("#tabs ul li").delegate('a', 'click', function(e){ 
     e.preventDefault(); 
     return false; 
    }); 
}); 

這一點的黑客就可以了。它沒有什麼壞處,因爲JQuery標籤在初始化後不需要href屬性。

+0

我試過,並得到此錯誤:未捕獲的jQuery UI選項卡:不匹配的片段標識符。jquery-ui-1.8.16.custom.min.js:461 d.widget._tabify jquery-ui-1.8.16.custom.min.js:461 d.event.handle jquery-1.5.1.min.js:16 d.event.add.k.handle.m – Funky

+0

請參閱我編輯的答案 –

+0

我也提供了jsfiddle鏈接,檢查一個也是 –

1

從錨標記刪除onclick=return false;和嘗試這樣的:

$('a[href^="tabs-"]').on('click', function(e) { 
    e.preventDefault(); 
}); 
+0

謝謝,但它沒有工作:( – Funky

0

這將阻止任何錨從jquery標籤跳轉:)(將滾動位置移回原始點擊)。

$('div.ui-tabs ul li a').click(function(e) { 
    e.preventDefault(); 
    scroll_position = $(window).scrollTop(); 
    $('html, body').animate({ 
    scrollTop: scroll_position 
    }, 0); 
}); 
相關問題