像这样的东西?注意:确保给你的隐藏链接一个唯一的ID。
显示/隐藏使用jQuery show
和hide
方法效果很好,但因为你想要的元素留在自己的位置,更适合使用visibility
样式属性:
$('#hide').click(function() {
// hide all in body except #e2, and #e2's parents.
$('body *').not($('#e2').parents().addBack()).css({visibility: 'hidden'});
return false; // cancel bubbling and default hyperlink effect.
});
$('#e2').click(function() { // click on #e2
return false; // cancel bubbling -- ignore click.
})
$(document).click(function (e) { // click on document
$('body *').css({visibility: 'visible'}); // show all in body.
});
div { border: 1px solid}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<div id="e1">Element X1</div>
<div id="e2">Element 2X</div>
<div id="e3">Element X3</div>
<a href="/" id="hide">Hide</a>
请注意,这些div
元素水平延伸,因此文本“元素2X”右侧的点击仍然会在#e2上。
你尝试过这么远吗? –
首先,永远不要使用id两次...使用#e3button或其他链接 - 你不能隐藏身体本身,因为#e3是身体的孩子。你可以做的就是隐藏除e3以外的所有div - 你只有一个链接,并隐藏这个链接总是相同的id,除了相同/以前定义的一个? – Proximate
这可能对你有帮助吗? http://stackoverflow.com/questions/13239331/hide-all-divs-except-one – Proximate