2013-10-28 4 views
0

Рассмотрим следующий код, который переключает видимость двух классов с раздельным клик() функции:Как добавить, если заявление на функцию переключения

<!-- 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(); 
}); 

Как бы обновить это так, что любое время, как х и 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

Demohttp://jsfiddle.net/Yn3L2/

Rest должны соответствовать вашим потребностям :)

код

$(".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 LOL yeah bruv, спасибо ** demo ** http://jsfiddle.net/Yn3L2/ ':))' –

+0

@Tats_innit спасибо, если я хочу сохранить это отношение к $ this var (т. Е. Иметь возможность используйте это несколько раз на одной странице, но только активируйте функцию в классах братьев, если бы ($ this.siblings (". a"). is (': visible') &&() $ this.siblings (".b ") .is (': visible')) work? – 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 – MarsOne

Смежные вопросы