我如何在div之间切换

我有2个div。 我希望div id 1在页面加载时可见,当我点击主div中的任何地方时,id应该是可见的。当用户再次点击main 2时应隐藏并且1可见。

div One visible
div two visible

我如何使用Jquery完成它? 我不知道如何获得切换效果

谢谢

十分简单。

 $(function () { var $main = $('#main'), $1 = $('#1'), $2 = $('#2'); $2.hide(); // hide div#2 when the page is loaded $main.click(function () { $1.toggle(); $2.toggle(); }); }); 

jsfiddle演示→


编辑

OP评论: “无论如何,我可以跟踪哪个div可见?”

当然有; 这取决于你想如何使用它。 您可以手动维护标志:

 $(function () { var $main = $('#main'), $1 = $('#1'), $2 = $('#2'), $visible; $2.hide(); // hide div#2 when the page is loaded $visible = $1; $main.click(function () { $1.toggle(); $2.toggle(); $visible = ($visible === $1 ? $2 : $1); }); }); 

或者你可以编写一个能够为你找到它的函数:

 $(function () { var $main = $('#main'), $1 = $('#1'), $2 = $('#2'); $2.hide(); // hide div#2 when the page is loaded $main.click(function () { $1.toggle(); $2.toggle(); }); function whichIsVisible() { if (!$1.is(':hidden')) return $1; if (!$2.is(':hidden')) return $2; } }); 

正如jAndy所指出的,这个函数可以用更简洁/简洁的forms编写:

 function whichIsVisible() { return $1.add($2).filter(':visible'); } 

但是,它在语义上与第一个版本不同 。 第一个版本返回以下之一:

  • $1
  • $2
  • undefined

而jAndy的版本返回以下之一:

  • $1
  • $2
  • $1.add($2) ,一个双元素的jQuery对象
  • $() ,一个空的jQuery对象

所以他们并不完全等同

听起来好像

HTML

 
div One visible

JS

 $(function() { $('#main').click(function() { $('#1, #2').toggle(); }); }); 

演示 : http : //www.jsfiddle.net/4yUqL/74/

 $(function(){ // start out hiding the second $('#2').hide(); // when they click the main div $('#main').click(function(){ // make one hide and the other show. $('#1,#2').toggle(); }); }); 

应该做的伎俩。 工作示例: http : //www.jsfiddle.net/bradchristie/3XznV/1/ (请原谅红色背景,想知道点击的位置。;-)

编辑:修复了您的样式表(边框),因此“1”和“px”没有空格。 😉

工作实例发布于http://jsfiddle.net/y8uwt/

HTML:

 
div One visible
click

JS:

 $(document).ready(function() { $("#button").click(function(event) { $("#1").toggle(); $("#2").toggle(); }) });