内容中有锚点的jquery选项卡 - 跳跃问题

时间:2012-08-27 15:58:08

标签: jquery jquery-ui tabs jquery-ui-tabs jquery-tabs

我正在尝试将锚点链接到jquery选项卡式内容中。我已经让它工作,但是,现在当我点击选项卡时,页面跳转到tab-content div的顶部,并切断标签。当点击标签时,我希望它保持在同一位置而不滚动。我还需要从URL访问每个选项卡和内部锚点,只需要选项卡URL不要跳转到tab-content div的顶部,切断顶部的选项卡。例如:http://mysite.com/test#tab1

这是我到目前为止所做的:

<script src="http://ajax.googleapis.com/ajax/libs/jquery/1.8.0/jquery.min.js" type="text/javascript"></script>
<script type="text/javascript">

$(function() {
$('a.refresh').live("click", function() {
      location.reload();
});
 });
</script>

<section class="wrap">

<div class="tablist">
<ul class="tabs">
<li><a href="#tab1">Tab 1</a></li>
<li><a href="#tab2">Tab 2</a></li>
<li><a href="#tab3">Tab 3</a></li>

</ul>
</div>
<div class="panes">
<div id="tab1" class="tab-content">
Tab 1 content
<br />
<a name="anchor1" id="anchor1">Anchor 1</a>
</div>

<div id="tab2" class="tab-content">
Tab 2 content
</div>

<div id="tab3" class="tab-content">
Tab 3 content
<br />
<a name="anchor2" id="anchor2">Anchor 2</a>
</div>

</div>
</section>

<script type="text/javascript">
$(document).ready(function() {
var $tabContent = $(".tab-content"),
    $tabs = $("ul.tabs li"),
    tabId;

$tabContent.hide();
$("ul.tabs li:first").addClass("current").show();
$tabContent.first().show();

$tabs.click(function() {
    var $this = $(this);
    $tabs.removeClass("current");
    $this.addClass("current");
    $tabContent.hide();
    var activeTab = $this.find("a").attr("href");
    $(activeTab).fadeIn();

});

// Grab the ID of the .tab-content that the hash is referring to
tabId = $(window.location.hash).closest('.tab-content').attr('id');

// Find the anchor element to "click", and click it
$tabs.find('a[href=#' + tabId + ']').click();
 })

$('a').not('.tabs li a').on('click', function(evt) {
evt.preventDefault();
var whereTo = $(this).attr('goto');
$tabs = $("ul.tabs li");
$tabs.find('a[href=#' + whereTo + ']').trigger('click');

$('html, body').animate({
    scrollTop: $('#'+whereTo+' a').offset().top });


 });
 </script>

任何想法,想法或帮助都会非常感激!!

谢谢!

1 个答案:

答案 0 :(得分:1)

您需要将此内容添加到事件中以停止其默认行为

preventDefault();

请参阅the documentation

因此,对于任何需要停止其行为的锚标记

$('#yourselector').click(function(e){
    e.preventDefault();
});