2012-04-21 87 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