2015-03-30 5 views
-1

я следующий код:Показать/Скрыть DIVs на основе DIV нажмите

<script type="text/javascript"> 
jQuery.noConflict(); 
    jQuery(document).ready(function ($) { 
     $('#telefon').click(function() { 
      $('#telefon-text').show('fast'); 
      $('#sos-text').hide('fast'); 
      $('#positionsbestimmung-text').hide('fast'); 
     }); 
     $('#sos').click(function() { 
      $('#telefon-text').hide('fast'); 
      $('#sos-text').show('fast'); 
      $('#positionsbestimmung-text').hide('fast'); 
     }); 
     $('#positionsbestimmung').click(function() { 
      $('#telefon-text').hide('fast'); 
      $('#sos-text').hide('fast'); 
      $('#positionsbestimmung-text').show('fast'); 
     }); 
    }); 
</script> 

и его работает нормально, проблема у меня есть, что когда я нажимаю, например, первый DIV и попробуйте нажать на нее еще раз, чтобы закрыть он не закрывается. Он закрывается только тогда, когда я нажимаю следующий. Что мне нужно изменить здесь, чтобы закрыть его, когда я нажму на него второй раз?

+0

использование '.toggle ("быстрый")' вместо 'шоу/hide' – wahwahwah

+0

Вы можете использовать JQuery в' .toggle() ', но не может обеспечить работу образец для вашего дела, если вы не публикуете свой html. –

+0

Добавляю ли я .toggle() для каждого из них или только тот, который я хочу показать? –

ответ

1

Использование JQuery .toggle():

Пример:

$('#sos').click(function() { 
     $('#telefon-text').hide('fast'); 
     $('#sos-text').toggle('fast'); 
     $('#positionsbestimmung-text').hide('fast'); 
    }); 

Переключение в основном заботится о некоторых из логики для вас. А именно, если элемент скрыт, он показывает его, если его показано, он скрывает его.

Рабочий пример:

$(function() { 
 

 
    $('#btnFoo').click(function() { 
 
    $('#foo').toggle("fast"); 
 
    $('#bar').hide("fast"); 
 
    }); 
 

 

 
    $('#btnBar').click(function() { 
 
    $('#bar').toggle("fast"); 
 
    $('#foo').hide("fast"); 
 
    }); 
 

 
});
.example { 
 
    height: 100px; 
 
    width: 100px; 
 
    background-color: teal; 
 
    border: dashed 2px pink; 
 
    margin-bottom: 15px; 
 
    display: none; 
 
}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.11.1/jquery.min.js"></script> 
 
<div class="example" id="foo">Foo</div> 
 
<div class="example" id="bar">Bar</div> 
 
<button id="btnFoo">Show/Hide Foo</button> 
 
<button id="btnBar">Show/Hide Bar</button>

+0

Если я добавлю .toggle() на всех трех, как вы предложили, и щелкните по любому DIV, он откроет все три. –

+0

Отредактировано - вы хотите скрыть два других элемента, только переключите ту, которую вы хотите открыть/закрыть. – wahwahwah

+0

безупречный, спасибо. Выучил одну хорошую вещь сейчас! –

1

Как было предложено на предыдущем ответе, вы можете сделать это с .toggle(), но вам нужно переключить только относительно DIV на кнопку щелкнутой, так:

$('#telefon').click(function() { 
    $('#telefon-text').toggle('fast'); 
}); 
$('#sos').click(function() { 
    $('#sos-text').toggle('fast'); 
}); 
$('#positionsbestimmung').click(function() { 
    $('#positionsbestimmung-text').toggle('fast'); 
}); 

вы можете увидеть здесь работает демо: http://jsfiddle.net/yxf4g93w/

+0

спасибо, это работает также –

0

Сначала примените класс, общий для всех ваших s.

<div class="div-class-here"></div> 
<div class="div-class-here"></div> 
<div class="div-class-here"></div> 

Затем

var $divs = $('.div-class-here'); 

$divs.on('click', function() { 
    $divs.removeClass('fast'); 
    $(this).addClass('fast'); 
});