2014-11-08 66 views
1

只有假設<div id="hidden"></div>可見,我需要設置全局點擊操作。通過單擊按鈕顯示一個元素並通過點擊隱藏其他地方

設置全局功能很簡單:

$(document).click(function(e) { 
    $("#hidden").fadeOut(700); 
}); 

但我也有:

$("#hidden").hide(); 
$("#button").click(function(e) { 
    $("#hidden").fadeIn(700); 
}); 

而這兩個不一起工作造成第一次點擊它會fadeInfadeOut#hidden我試過用:

$("#button").click(function(){ 
     $("#hidden").fadeIn(500); 
    }); 

    if($("#hidden").is(":visible")) { 
    $(document).click(function(e) { 
     $("#hidden").fadeOut(700); 
    }); 
} 
else { 
} 

...但是沒有用......

jsFiddle

+0

目前尚不清楚你想要你的邏輯做什麼。如果我猜測,你有一個按鈕,當點擊時顯示一些東西,如果再次點擊則隱藏一些東西......但是這並沒有正確地在問題中出現。你能提高這個問題嗎? – Kolban 2014-11-08 15:34:48

+0

@Kolban我需要的是當按鈕被點擊時,一個對象淡入淡出,而不是當再次點擊,但當頁面上的其他任何東西被點擊時,對象淡出。這就是爲什麼我設置點擊全局變量。 – Alin 2014-11-08 15:36:41

+0

@Kolban我會組織一個jsfiddle讓事情變得更簡單,好嗎? – Alin 2014-11-08 15:40:02

回答

1

可以在全局函數檢查event.target

$(document).click(function(e) { 
 
    if (e.target.id == "button") $("#hidden").fadeIn(500); 
 
    else $("#hidden").fadeOut(700); 
 
});
#hidden { 
 
    display: none; 
 
    height: 50px; 
 
    background: hotpink; 
 
}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script> 
 
<div id="hidden"></div> 
 
<button id="button">Show</button>

+0

它不工作......我需要的是當按鈕被點擊時,一個對象淡入淡出,而不是當再次單擊時,但是當頁面上的其他任何東西被點擊時,對象將淡入淡出。這就是爲什麼我設置點擊全局變量。 – Alin 2014-11-08 15:39:08

+1

@Alin http://jsfiddle.net/VMAJ7/21/。使用CSS進行演示,添加'display:none'而不是使用jquery在頁面加載時隱藏元素。此外,您可以使用內置的[stack snippet](http://meta.stackoverflow.com/q/269753/2333214)提供可運行的演示:) – 2014-11-08 15:47:47

+0

謝謝,我還沒有意識到堆棧片段功能,但它是偉大:)也,它工作很好:)我想問一些更多,我可以定位數據rel?如在e.target.id但數據相對? – Alin 2014-11-08 15:52:04