2010-04-26 303 views
0

我有一個JQuery的小問題。jquery和點擊隱藏div

嗯,我有一個,我想隱藏這個div,當用戶點擊不在Facebook中的「通知」行爲的區域。

我發現的解決方案是使用jQuery.live()方法,但我認爲有更好的方法來做到這一點。

謝謝。

回答

4

假設:

<div class="notification">You have 3 new messages</div> 

使用:

$(document).click(function(evt) { 
    if ($(this).closest("div.notification").length == 0) { 
    $("div.notification").fadeOut(); 
    } 
}); 

基本上這監聽所有點擊。如果收到的通知內沒有發生這種情況,它會將其淡出。

+0

如果點擊是在做,會發生什麼'div.notification'本身? – rahul 2010-04-26 04:13:13

+0

@rahul不得不對這種情況做一個小小的修改('parents()'到'closest()'),但基本上它不會在點擊時淡出它們。 – cletus 2010-04-26 04:18:07

+0

爲你+1並刪除了我的答案。 – rahul 2010-04-26 04:21:06

0

謝謝您的回答,但在:

$(this).closest("div.notification").length == 0) 

總是返回我0(即使我在div點擊),所以在div總是隱藏。

這是我的代碼:

$(document).click(function(evt) { 
     if ($(this).closest("div#show_notif").length==0) 
      $("div#show_notif").fadeOut(); 
}); 

和HTML:

<div id="click_show_notif" onclick="$('div#show_notif').show();"><img src="http://'+STATIC_SERVER+'/images/notif.png" /><div id="show_notif"></div> 

有件事我忘了嗎?

0

試試這個:

$("#click_show_notif").live('click',function(e) { 
    $("#show_notif").show(); 
    return false; 
}); 

$('body').live('click',function(e) { 
    if ($(this).closest("div#show_notif").length==0) { 
     $("div#show_notif").hide(); 
    } 
});