2013-03-07 3 views
2

Надеюсь, кто-то может помочь! Я новичок jQuery/JS. Есть ли простой способ сконденсировать несколько функций в один. Я использую jQuery для расширения и сглаживания скрытых div. У меня это нормально работает с кодом ниже, но может быть 50+ (а не только 4), и я предполагаю, что будет способ сконденсировать их в небольшой кусок кода во имя оптимизации. Любая помощь будет очень благодарна. Вот JS ...Как сконденсировать несколько функций jQuery в одну краткую функцию?

$('#toggle1').click(function() { 
    $('.toggle').slideToggle('fast'); 
    return false; 
    }); 

    $('#toggle2').click(function() { 
    $('.toggle2').slideToggle('fast'); 
    return false; 
    }); 
    $('#toggle3').click(function() { 
    $('.toggle3').slideToggle('fast'); 
    return false; 
    }); 

    $('#toggle4').click(function() { 
    $('.toggle4').slideToggle('fast'); 
    return false; 
    }); 

и вот HTML ...

<div class="docBlocA"> 
    <div class="docTitle" id="toggle1">Document Title Goes Here (click to expand)</div> 
    <div class="toggle1" style="display:none; width:100%;">Hidden div content here</div> 
</div><!--docBlocA--> 

<div class="docBlocB"> 
    <div class="docTitle" id="toggle2">Document Title Goes Here (click to expand)</div> 
    <div class="toggle2" style="display:none; width:100%;">Hidden div content here</div> 
</div><!--docBlocB--> 

<div class="docBlocA"> 
    <div class="docTitle" id="toggle3">Document Title Goes Here (click to expand)</div> 
    <div class="toggle3" style="display:none; width:100%;">Hidden div content here</div> 
</div><!--docBlocA--> 

<div class="docBlocB"> 
    <div class="docTitle" id="toggle4">Document Title Goes Here (click to expand)</div> 
    <div class="toggle4" style="display:none; width:100%;">Hidden div content here</div> 
B</div><!--docBlocB--> 

Большое спасибо заранее ...

ответ

5

Вы можете использовать селектор класса и next метод, this в пределах контекст обработчика относится к щелканному элементу.

$('div.docTitle').click(function(){ 
    $(this).next().slideToggle('fast'); 
}); 

Примечание: DIV элемент не имеет действия по умолчанию, так что вам не нужно return false, если вы не хотите, чтобы остановить распространение события.

+0

Brilliant! Большое спасибо! – user1919582

0
$('#toggle1,#toggle2,#toggle3,#toggle4').click(function() { 
    $('.toggle').slideToggle('fast'); 
    return false; 
    }); 
+0

Спасибо Srinivas, но это открывает сразу все скрытые div! – user1919582

1

использование

$('.docTitle').click(function() { 
    $(this).slideToggle('fast'); 
    }); 
+1

Почему это поддерживается? – Jai

+0

@Amrendra .. Вам нужно поставить кавычки на '.doctitle' и имя класса также неправильно – SRy

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