2010-06-24 45 views
3

我似乎有問題與我之前發佈的相同。我想隱藏所有默認的div,只顯示一個div。然後用戶可以點擊一個側面標籤來顯示另一個。問題是divs在頁面加載後只隱藏一秒鐘,但很快又出現。這是我們假設隱藏頁面的div只有用「pple」的號碼顯示在div代碼:jquery hide方法只隱藏div一秒,但然後div自動重新出現

$("a#link2").click(function(){$("#content > div").hide(); $("#pple").show();}); 

markup: 

    home.html:           
<li><a href="about.html" id="link2">About</a></li> 

about.html: 
<div id="content"> 
<div class="tabContent" id="pple"> 
<p> 
    Content 
<p> 
    </div> 

    <div class="tabContent" id="serv"> 

<p> 
    Content 
</p>  
    </div> 

    <div class="tabContent" id="sol">  

<p> 
    Content 
</p>  
    </div>    
</div> 

感謝任何迴應。

+0

是*此*頁' about.html'?它看起來像你的代碼重新加載頁面,除非你阻止在你沒有發佈的附加代碼中跟蹤錨點。 – 2010-06-24 01:35:59

+0

沒有鏈接不在about.html上。該鏈接屬於home.html。 – JohnMerlino 2010-06-24 11:45:35

回答

8

您需要在<a>元素的處理程序上使用return false;

這是因爲<a>元素的默認行爲正在發生並重新加載頁面,所以您需要禁用該行爲。

$("a#link2").click(function(){ 
    $("#content > div").hide(); 
    $("#pple").show(); 
    return false; // Will prevent default behavior 
        // but it also prevents event bubbling 
}); 

或者,你可以調用event.preventDefault()

$("a#link2").click(function(event){ 
    event.preventDefault(); // Prevents the default behavior 
          // and event bubbling is still intact 
    $("#content > div").hide(); 
    $("#pple").show(); 
}); 

http://api.jquery.com/event.preventdefault/

+0

問題是有兩個不同的網址,一個是默認主頁:home.html,另一個是about.html,所以返回false會阻止它在點擊鏈接時進入下一頁。此外,event.preventDefault()根本不會執行任何操作 - 當我單擊鏈接時,它會將我帶到下一頁,但不會隱藏任何內容。 – JohnMerlino 2010-06-24 11:40:35

0

試圖阻止違約後的div是隱藏 所以你可以做 ...function(event) event.preventDefault()...

+0

謝謝山姆,event.preventDefault()停止div再次出現。你節省了我的時間,因爲我點擊一個按鈕時遇到同樣的問題。謝謝。 – 2013-10-21 03:25:57