2016-05-13 53 views

回答

0

廣場這裏面DOM已準備就緒,

$(".forms-content").hide(); 

然後代碼會,

$(document).ready(function($) { 
    $(".forms-content").hide(); 
    $('#forms').find('.forms-toggle').click(function() { 
    //Expand or collapse this panel 
    $(this).next().slideToggle('fast'); 
    //Hide the other panels 
    $(".forms-content").not($(this).next()).slideUp('fast'); 
    }); 
}); 

Fiddle

+0

@Phantasmix這樣你能接受正確的答案? –

0

請也提高你的JS:

(function($){ 
    //store reusable global vars 
    var $forms = $('#forms'), 
     $formContents = $forms.find(".forms-content"); 

    //hide on load 
    $formContents.hide(); 

    //attach only on handler to #forms instead of to every tab separately 
    $forms.on('click', '.forms-toggle', function(event){ 
     event.preventDefault(); 

     //reuse this value (only on reference) 
     var $thisContent = $(this).next(), 

     //Expand or collapse this panel 
     $thisContent.slideToggle('fast'); 

     //Hide the other panels 
     $formContents.not($thisContent).slideUp('fast'); 
    }); 
}); 
+0

你能解釋你的代碼更好嗎?謝謝 – Phantasmix

+0

它的速度更快,因爲它重用了搜索結果(使得查詢是整個DOM結構中的搜索),它更易於維護。如果你有很多選項卡,那麼功能處理程序就會少一些:讓我們在一個頁面上說20個選項卡。你的代碼生成了20個事件處理程序,main創建了1.你使用了兩次'$(this).next()',這違反了DRY編碼標準,使得代碼難以維護。與$(「。forms-content」)一樣 - 在答案 –

+0

中增加了感謝。不幸的是,你的代碼不適合我。 – Phantasmix

相關問題