2013-10-28 77 views
0

考慮下面的代碼,其中切換兩類不同的點擊的可見性()函數:如何添加一個if語句來切換功能

<!-- Toggles --> 
<div class="a"></div> 
<div class="b"></div> 

<!-- Result --> 
<div class="x" style="display:none"></div> 
<div class="y" style="display:none"></div> 
<div class="z" style="display:none"></div> 

<!-- Script --> 
$(".a").click(function() { 
var $this = $(this); 
    $this.siblings(".x").toggle(); 
}); 


$(".b").click(function() { 
var $this = $(this); 
    $this.siblings(".y").toggle(); 
}); 

我怎麼會更新這個讓任何時候x和y是可見的,第三類是「z」而不是x和y?

回答

0

此作品爲展示位置:http://jsfiddle.net/DKRe2/1/

HTML:

<!-- Toggles --> 
<div class="a">a</div> 
<div class="b">b</div> 
<!-- Result --> 
<div class="x" style="display:none">class x</div> 
<div class="y" style="display:none">class y</div> 
<div class="z" style="display:none">class z</div> 

JS:

<!-- Script --> 
$(".a").click(function() { 

    var $this = $(this); 
    if ($this.siblings(".y").css('display') != 'none' && $this.siblings(".x").css('display') == 'none') { 
     //now Hide y and show Z 
     $this.siblings(".y").toggle(); 
     $this.siblings(".z").toggle(); 
    } else { 
     $this.siblings(".z").css('display', 'none'); 
     $this.siblings(".x").toggle(); 
    } 
}); 


$(".b").click(function() { 
    var $this = $(this); 
    if ($this.siblings(".x").css('display') != 'none' && $this.siblings(".y").css('display') == 'none') { 
     //now Hide y and show Z 
     $this.siblings(".x").toggle(); 
     $this.siblings(".z").toggle(); 
    } else { 
     $this.siblings(".z").css('display', 'none') 
     $this.siblings(".y").toggle(); 
    } 
}); 
+0

謝謝,如果我想保持代碼關係(即參考sibilings),這將如何工作,所以只有兄弟姐妹受到影響(類在頁面的其他地方重複)? – alias51

+0

只需添加之前的兄弟選擇器即可。我刪除了它,因爲它在您提供的代碼示例中不是絕對必需的。我會修改答案。 –

1

演示http://jsfiddle.net/Yn3L2/

其餘的應該滿足您的需求:)

代碼

$(".a").click(function() { 
    var $this = $(this); 
    $this.siblings(".x").toggle(); 
    checkZ(); 
}); 

$(".b").click(function() { 
    var $this = $(this); 
    $this.siblings(".y").toggle(); 
    checkZ(); 
}); 

function checkZ() { 
    $('.z').hide(); 
    if ($('.x').is(':visible') && $('.y').is(':visible')) { 

     $('.z').show(); 
    } 
} 
+1

你貼錯的jsfiddle鏈接? –

+0

@Asad大聲笑是的布魯夫,謝謝**演示** http://jsfiddle.net/Yn3L2/':))' –

+0

@Tats_innit謝謝,如果我想保持這個關係到$這個變種(即能夠如果在同一頁面上多次使用它,但只觸發兄弟類的函數,if if($:this.siblings(「。a」)。is(':visible')&&()$ this.siblings(「.b 「).is(':visible'))工作? – alias51

0

我想這是你真正想要的。

Working DEMO

新增jQuery代碼

function checkZ() { 
    $('.z').hide(); 
    if ($('.x').is(':visible') && $('.y').is(':visible')) { 
     $('.x').hide(500); 
     $('.y').hide(500) 
     $('.z').show(); 
    } 
} 
+0

謝謝,如果我想保持代碼關係(即引用sibilings),這將如何工作,所以只有兄弟姐妹受到影響(類在頁面的其他地方重複)? – alias51

+0

BY可能爲子div提供一個唯一的ID並引用jQuery中的ID – MarsOne