Alex
Alex

Reputation: 283

Cancel page scroll when using hash in links.

I made tabs with jQuery. And I need to be able to link to exact tab. It's done.(code below) Problem I faced is that I can't prevent page scroll after switching the tabs. How can I disable scroll but still use hash?

<ul class="tabs group">
    <li>
    <a id="komp-link" class="switch" href="#komplekti">Komplekti</a>
    </li>
    <li>
    <a id="intern-link" class="switch" href="#internets">Internets</a>
    </li>
    <li>
    <a id="iptv-link" class="switch" href="#iptelevizija">IP Televizija</a>
    </li>
</ul>

<div id="komplekti">content 1</div>
<div id="internets">content 2</div>
<div id="iptelevizija">content 3</div>

// Tabs Switch

 $('#komp-link').click(function(){
        $('#komplekti').show();
        $('#internets').hide();
        $('#iptelevizija').hide();
    });
    $('#intern-link').click(function(){
        $('#komplekti').hide();
        $('#internets').show();
        $('#iptelevizija').hide();
    });
    $('#iptv-link').click(function(){
        $('#komplekti').hide();
        $('#internets').hide();
        $('#iptelevizija').show();
    });

// Enable linking to exact Tab

if(window.location.hash) {

        var getHash = window.location.hash;
        console.log(getHash)
        $(getHash).show();
    }

Upvotes: 0

Views: 229

Answers (2)

Alex
Alex

Reputation: 283

Ok so I found decision. Best & easiest way is to use Bens Almans jQ plugin - hashchange event.

Upvotes: 0

Jason P
Jason P

Reputation: 27012

Use event.preventDefault():

$('#komp-link').click(function(e){
    e.preventDefault();
    //...
});

You should be able to simplify your code though..

<ul class="tabs group">
    <li>
    <a id="komp-link" class="switch" href="#komplekti">Komplekti</a>
    </li>
    <li>
    <a id="intern-link" class="switch" href="#internets">Internets</a>
    </li>
    <li>
    <a id="iptv-link" class="switch" href="#iptelevizija">IP Televizija</a>
    </li>
</ul>

<div id="komplekti" class="tab">content 1</div>
<div id="internets" class="tab">content 2</div>
<div id="iptelevizija" class="tab">content 3</div>

...

$('.switch').click(function(e) {
    e.preventDefault();
    $('.tab').hide();
    $($(this).href()).show();
});

Upvotes: 1

Related Questions