我一直在研究一個非常簡單的Jquery腳本,它爲用戶顯示一些迷你儀表板(div)。當有人點擊鏈接時,會顯示正確的面板。非常像Twitter的登錄面板。jQuery在元素外面隱藏元素
我唯一的問題是,當我點擊面板外部時,它會按照預期關閉,但是當我點擊面板內部時仍然會關閉。
每個面板裏面還有其他的html元素,我想知道他們是否正在阻礙主面板div?
帳戶menu.js
(function($){
$.fn.renderDash = function(openDash, fn) {
var container = $(this);
container.removeClass('no-js');
container.bind('click', function(event){event.preventDefault();clickStart();})
.bind('mouseup', function(event){mouseupDash();})
$(document.body).bind('mouseup', function(event){ // <-- the offending code
if ($(openDash).has(this).length == 0) {
$(openDash).hide();
}
})
function clickStart() {$(openDash).toggle();}
function mouseupDash() {return false;}
};
})(jQuery);
的index.html
...
<script src="jquery-1.4.4.min.js" type="text/javascript"></script>
<script src="account-menu.js" type="text/javascript"></script>
<script type="text/javascript">
$(document).ready(function() {
$('.panel1-start').renderDash("#panel1");
$('.panel2-start').renderDash("#panel2");
$('.panel3-start').renderDash("#panel3");
});
</script>
...
</head>
<body>
...
<ul>
<li>
<a href="" class="panel1-start">Panel 1 Link</a>
<ul id="panel1">
<li>Panel 1 Content</li>
</ul>
</li>
panel2, panel3, etc...
更新:我剛添加的HTML代碼片段。可能會讓事情更清楚些。
我不知道爲什麼兩個這些答案都被投票了,當他們都沒有工作 – EddyR 2011-03-15 15:17:33
可能有人發現這些幫助他們遇到的問題。我已經更新了我的答案,並希望這會爲您解決問題! :) – lnrbob 2011-03-15 22:26:22
啊,這更像它。非常感謝你,jsfiddle網站也很酷。 – EddyR 2011-03-16 03:20:15