2011-11-13 37 views
2

可能是最好的例子来说:如何使用Jquery隐藏隐藏选项卡上的子元素,并隐藏它直至隐藏它?

<div id="tab-1"> 
    <input name="1" type="text" /> 
    <input name="2" type="text" /> 
    <input name="3" type="text" /> 
<div> 
<div id="tab-2"> 
    <input name="4" type="text" /> 
    <input name="5" type="text" /> 
    <input name="6" type="text" /> 
<div> 

我使用jQuery工具“选项卡”工具。这将切换上面两个div的可见性,以便一次只显示一个div。

的问题是如下:

  1. 在用户切换到标签2.这隐藏标签-1和字段1至3 这也说明选项卡-2和其孩子,字段4到6.

  2. 用户在选项卡2上执行操作,该选项卡应从现在隐藏的选项卡1中删除字段2。我使用$('#field-2').hide(0);

应该隐藏字段中的两个,但什么都不做,因为第二场已经隐藏。现在很好。

3.用户切换回制表符-1。

实际结果: 所有三个字段,包括字段2,现在都可以再次看到。

期望的结果: 字段1和3,现在可见的,但切换到制表1中未确实取消隐藏字段2,因为它是明确的函数隐藏。字段2应该保持隐藏状态,直到显式取消隐藏。

我想我可以通过为display:none;指定一个特殊的css类来避开这个问题,但我想知道是否有更好的解决方案来独立显示/隐藏该元素所在的选项卡,而无需分配额外的CSS类。

回答

1

看来,如果你确实改变元素的风格display,而不是使用hide工作:

$('selector').css('display', 'none'); 
+0

这工作,谢谢。尽管自从.hide()方法以来它的奇怪之处在于......同样的事情...... – Nick

+1

@Nick我的猜测是,'hide'首先检查元素在它做什么之前是否可见。如果不是(例如,如果它的父母已经隐藏),那么它什么都不做?当然,为什么不呢。 – sdleihssirhc