2013-09-25 5 views
0

Я изучаю javascript, и я пытаюсь переключить простой эффект скрытия и раскрытия, чтобы не повезло. В настоящее время эффект отменяется только нажатием на другой div с той же ссылкой.Javascript toggle hide

Вот мой JavaScript:

var $ = jQuery; 

$(document).ready(function(){ 
    $('.section').hide(); 
}); 

function showMe(num){ 
    $('.section').hide(0); 
    $('#div_one'+num).fadeIn(1000); 

} 

Вот мой CSS:

.height-auto 

{ 
    height:auto; 
} 
.section 

{ 
    width:552px; 
    min-height:300px; 

} 

Вот мой HTML:

<div class="section home-things visible" id="div_one1"> 

     <div class="section-contents"></div> 
    </div> 
</div> 

В идеале, я бы л ike для «javascript: showMe (1)» для переключения «div_one1» и т. д.

Пожалуйста, помогите

+1

Сначала быстро примечание стороны: положить 'div' внутри' Ā' недействителен HTML и может вызвать проблемы в некоторых браузерах; используйте 'span' - вы можете по-прежнему стирать его' display: block; ', если это необходимо, но больше не будет вызывать проблемы (или просто стирать тег 'a' как таковой и вообще удалять внутренний элемент) –

+0

Отмечено и спасибо! – babusi

+0

@CollinGrady Fyi вы можете иметь блокирующие элементы внутри тега привязки от html5 и далее. Это по-прежнему действительный html. – PSL

ответ

0

Вашего кода, написанная чисто показательной функции. Вы прячете его каждый звонок showMe, а затем показываете его потом.

Что-то вроде следующего может сделать его фактическое тумблер:

function showMe(num) 
{ 
    if ($('#div_one'+num).is(":visible")) 
    { // the div is visible, so we just want to hide it 
     $('#div_one'+num).hide(); 
    } 
    else 
    { // the div is not visible, so hide the rest and show it 
     $('.section').hide(0); 
     $('#div_one'+num).fadeIn(1000); 
    } 

    // I don't know what these next two lines are for, 
    // as your code sample doesn't include them, so leaving as-is :) 
    $('.height-auto').removeClass('height-auto'); 
    $('#strict').addClass('height-auto'); 
} 

Однако JQuery имеет несколько удобных встроенных функций, которые могут сделать его немного короче:

function showMe(num) 
{ 
    $('#div_one'+num).siblings('.section').hide(); 
    $('#div_one'+num).fadeToggle(); 

    // I don't know what these next two lines are for, 
    // as your code sample doesn't include them, so leaving as-is :) 
    $('.height-auto').removeClass('height-auto'); 
    $('#strict').addClass('height-auto'); 
} 

jsFiddle

+0

Boom! Очень кратким и точным. Спасибо! Я сохраню это в своих заметках. – babusi

0

Я опаздываю, но построил его для вас, так что просто отправьте в качестве ответа

$(document).ready(function(){ 
    $('.section').hide(); 
    $('#div_one1').show(); 
}); 

function showMe(num){ 
    $('.section').hide(); 
    $('#div_one'+num).fadeIn(300); 
} 

DEMO.

+0

Спасибо. Примите мое скромное upvote – babusi

+0

Действительно оцените его, спасибо :-) –

+0

Это не переключит вещи; он по-прежнему будет показывать только раздел, а не скрывать его снова :) –