2010-12-02 33 views
1

所以,我試圖關閉模糊表單,例如Facebook評論。問題是,我有一個:關閉「模糊」表單 - 有沒有更好的方法?

$(window).click(function(){ $('.comment_form').hide(); }); 
$('.comment_form').click(function(){ return false; }); 

然而,工作得很好,通過添加return false,點擊時當我真正去讓它活它取消了提交按鈕。

我想這會工作邏輯代替:

$('*:not(.comment_form,.comment_form *)').click(function(eve) 
{ 
    $('.comment_form').hide(); 
}); 

但是,不幸的是,它沒有,我以爲這是因爲當我點擊,讓我們說,.comment_form我其實點擊bodydivdiv ...等,所以它實際上隱藏了多次。

我的工作圍繞終於

$('*').click(function(eve) 
{ 
    if(!$(eve.target).is('.comment_form,.comment_form *')) 
    { 
     $('.comment_form').hide(); 
    } 
}); 

不過,我不太確定我喜歡這一點,這就是爲什麼即時詢問。這將觸發這個點擊事件每一次點擊

有沒有人有任何建議?

+0

我敢肯定,這個問題的答案是顯而易見的,但爲什麼不使用`$('。comment_form input')。blur(function(){...})? – 2010-12-02 06:58:41

+0

因爲,雖然這是一個表單,但註釋區域是一個textarea,並且,如果您錯過並在提交旁邊點擊右側,我不希望它關閉。 – 2010-12-02 07:01:20

回答

1

你的解決方案是在正確的軌道上,但它可能是更理智的事件附加到document,而不是所有元素*):

$(document).click(function(eve) { 
    if (!$(eve.target).is('.comment_form, .comment_form *')) { 
     $('.comment_form').hide(); 
    } 
}); 
相關問題