2011-12-30 91 views
1

嗨,朋友我有div問題。 我有一個鏈接顯示/隱藏在我的網頁上點擊,我必須顯示或隱藏特定的div。 我做得很成功。 但我的問題是,只要我點擊該鏈接div被隱藏或顯示,但頁面直接在頂部&我必須再次滾動下來。 我不想滾動這個,也不想跳到頂部。HTML Divs顯示/隱藏問題

請幫我解決這個問題。 預先感謝您。

更新: 朋友我從我的一個朋友那裏得到了答案。 其實我正在使用 由於href =「#」每當我點擊該鏈接時,網址都會被更改並且頁面會顯示在頂部。

+0

您可以發佈您的示例代碼或http://jsfiddle.net – Pavan 2011-12-30 06:18:14

+0

創建的jsfiddle請分享您的代碼, – 2011-12-30 06:31:24

回答

1

您是否正在嘗試這麼做?

<!DOCTYPE html> 
<html lang="en"> 
<head> 
    <title></title> 
    <meta charset="utf-8"> 
</head> 
<body> 

    <div id="wrapper"> 
     <div id="container"> 

     </div><!-- end of #container div --> 

     <a id="showdiv">Show the div</a>|<a id="hideDiv">Hide the div</a>|<a id="toggle">Toggle</a> 

    </div><!-- end of #wrapper div --> 

</body> 
</html> 

這裏的CSS:

#container { 
width: 300px; 
    height: 300px; 
    background: red; 
    margin-bottom: 20px; 
} 

#wrapper { 
margin: 40px auto; 
width: 400px; 
} 

而這裏的jQuery的

$(function() {// When document is ready, run this... 

//Get hold of the link with the id #showdiv and do something when you click it 
$("#showdiv").click(function() { 
    // Grab the div with the id #container and show it 
    // Alert me when you're done 
    $("#container").show(2000, function() { 
     alert("I'm done showing"); 
    }); 
}); 

//Get hold of the link with the id #hideDiv and do something when you click it 
$("#hideDiv").click(function() { 
    // Grab the div with the id #container and hide it 
    // Alert me when you're done 
    $("#container").hide(2000, function() { 
     alert("I'm done hiding"); 
    }); 

}); 

// Toggle - This is like a On/Off Switch 
//Get hold of the link with the id #toggle and do something when you click it 
$("#toggle").click(function() { 
    // Grab the div with the id #container and show if hidden/hide if shown 
    $("#container").toggle(2000); 
}); 

}); 

當然你必須使用上面的腳本之前鏈接到jQuery的副本。 以下是演示的鏈接:http://jsfiddle.net/tonystark/HhNBA/

0

這是因爲你的鏈接指向類似#foo或只是#,而它不應該有一個href(或有一個空的)...

-1

你probaby有像href=# href屬性一個#請刪除哈希和替代那種編寫href='javascript:void(null);'

+0

這是一個可怕的想法,這將給如果JS錯誤已關閉。相反,在onclick事件處理程序返回false – mplungjan 2011-12-30 06:27:05

+0

@mplungjan夥伴onclick事件處理程序?即使js關閉?沒有得到你。 – 2011-12-30 06:30:48

+0

在務實的html/javascript中,#是IMNHO,完全可以,所以你需要有'Click'而不是'Click',因爲沒有必要,也沒有優雅地退化 – mplungjan 2011-12-30 06:32:21

1

假設你有一個鏈接

內聯(不推薦,但可能是你有什麼)

<script> 
function showhide(id) { 
    var elem = document.getElementById(id); 
    elem.style.display=elem.style.display=="none"?"block":"none"; 
    return false; // MANDATORY 
} 
</script> 

<a href="#" onclick="return showhide('someId')">Toggle</a> 
<div id="someId">Show or hide me when you click a link</div> 
0

取出href屬性並應用文字裝修風格

<a style="text-decoration: underline;" title="click me"></a> 

那會顯得更有意義不是將你不想一個href,後來阻止其正常運行。一個優雅退化的替代方法是使用href指向顯示/隱藏的div,默認顯示正常,讓javascript將其隱藏在可用的javascript的位置。

「改變你的錨(鏈接)到一個跨度,以便它沒有這種行爲,然後,使用css風格,所以它看起來你希望它看起來。」

我經常使用該技術。即使用帶有onclick的span或div,使用文本修飾:下劃線,光標:指針和可能的display:inline,如果您決定使用div。一個需要注意的是,在IE6中,css hover不能用於除錨點之外的任何其他功能。這很容易與JavaScript解決。

你完全可以刪除href屬性。錨具有上述優點(跨瀏覽器:懸停樣式)並允許用於工具提示等的標題屬性。

+0

這甚至不顯示... – mplungjan 2011-12-30 13:14:27

1

您必須取消鏈接的onclick處理程序的默認行爲。這樣做,不要在您單擊處理程序使用return false,而是使用event.preventDefault()

HTML:

<a href="#targetdiv" class="foo">hide me</a> 
<div id="#targetdiv">blah</div> 

的Javascript:

document.querySelector('a.foo').onclick = function(event) { 
    try { 
     document.querySelector(this.getAttribute('href')).style.display = 'none'; 
    } catch (e) { 
     console.error("couldn't find element to hide"); 
    } 
    event.preventDefault(); 
} 

JQuery的:

$('a.foo').click(function(event) { 
    try { 
     $($(this).attr('href')).hide(); 
    } catch (e) { 
     console.error("couldn't find element to hide"); 
    } 
    event.preventDefault(); 
}) 

更多信息:

+0

相當新的選擇器有趣的介紹。 [兼容性](https://developer.mozilla.org/En/DOM/Document.querySelector#section_5) – mplungjan 2011-12-30 09:12:08