2014-11-08 57 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

相关问题