2012-04-21 89 views
1

如何優化下面的jQuery代碼?如何優化點擊的jQuery代碼()

var $open = $('#open'), 
     $panel = $('div#panel'), 
     $close = $('#close'), 
     $switch = $('#toggle'); 
$open.click(function(){ 
    $panel.slideDown('slow'); 
}); 
$close.click(function(){ 
    $panel.slideUp('slow'); 
}); 
$switch.children('p').click(function(){ 
    $switch.children('p').toggle(); 
}); 
$close.css({'display':'none'}); 

我認爲有更好的方法來寫這個。

這是它所屬的HTML代碼。

<div class="tab"> 
    <ul class="login"> 
    <li class="left">&nbsp;</li> 
    <li>&nbsp;</li> 
    <li id="toggle"> 
     {if $smarty.session.customer_id} 
     <a id="open" class="open" href="{$logoff}" title="{#link_logoff#}">{#link_logoff#}</a>{else}<p id="open" class="open">{#link_login#}</p> 
     {/if} 
     <p id="close" class="close">Schließen</p>   
    </li> 
    <li class="right">&nbsp;</li> 
    </ul> 
</div> 
+0

「我認爲有更好的方法來寫這個。」 - 不是沒有看到HTML沒有。 – 2012-04-21 22:41:22

+0

我添加了缺少的HTML代碼 – user1286819 2012-04-21 22:54:36

+1

發佈您生成的HTML代碼是瀏覽器看到的,而不是smarty的東西。 – 2012-04-21 23:03:16

回答

0

,我可能會寫這樣的:

var $open = $('#open'), 
     $panel = $('div#panel'), 
     $close = $('#close') 

    $open.click(function(){ 
     $panel.slideDown('slow'); 
    }); 

    $close.click(function(){ 
     $panel.slideUp('slow'); 
    }); 

    $('#toggle p').click(function(){ 
     $('#toggle p').toggle(); 
    }); 

    $close.hide() 

也差不太多,我不知道是什麼給你的問題,你真正想要的目的。

+0

是不是可以編寫這樣的代碼$('#book')。fadeIn('slow',function(){ //動畫完成 });而不是每個元素開始新的 – user1286819 2012-04-21 23:22:52

+0

'toggle()'和fadeIn的區別是淡入淡出的部分,toggle()使用show/hide而不是fadeIn/Out,我認爲你也可以使用它的效果,檢查jQuery的網站。 – 2012-04-22 02:23:27