2012-04-25 91 views
1

我正在从jQuery库的简单操作。如何最大限度地减少我的jQuery脚本

$('#hasAccount').click(function() { 
     $('.authForm').slideDown(500, function() { 
      if ($('.shippingAddress').is(':visible')) { 
       $('.shippingAddress').slideUp(250); 
      } 
     }); 
}); 

$('#hasNotAccount').click(function() { 
     $('.shippingAddress').slideDown(500, function() { 
      if ($('.authForm').is(':visible')) { 
       $('.authForm').slideUp(250); 
      } 
     }); 
}); 

下面是代码的工作:http://jsfiddle.net/6tZQ2/2/

这很简单,但如果有任何solutiosn到minimalize此脚本1个行动我想知道?

感谢:-)

+0

有没有什么实际用法?或者它更代码打高尔夫?如果你愿意,你可能想要包含这个标签! – 2012-04-25 09:02:47

回答

0

你可以使用的slideToggle而失去if语句

+0

是的,但随着slideToggle你可以用一个单选按钮来关闭你的盒子:-( – Laurent 2012-04-25 09:14:49

0

这里亚去 - 虽然也有几百万的方式来做到这一点更好/更好/更紧凑...这是最快在我的脑海...:/

http://jsfiddle.net/neuroflux/6tZQ2/3/

[编辑]虽然 - 这是一个基于name属性 - 这样可能会更好做另一种方式:)

+0

感谢你的回答神经:o) – Laurent 2012-04-25 09:10:16

+0

神经,你认为我可以用你的压缩脚本使用hasClass()吗? – Laurent 2012-04-25 09:34:49

+0

yup! http://jsfiddle.net/neuroflux/6tZQ2/17/ – 2012-04-26 10:21:37

0

试试吧,我不是专家的jQuery:

$('input[name="account"]').click(function(e) { 
    if(e.target.id == 'hasAccount') { 
     $('.authForm').slideDown(500, function() { 
      if ($('.shippingAddress').is(':visible')) { 
       $('.shippingAddress').slideUp(250); 
      } 
     }); 
    } else { 
     $('.shippingAddress').slideDown(500, function() { 
      if ($('.authForm').is(':visible')) { 
       $('.authForm').slideUp(250); 
      } 
     }); 
    } 
}); 
0

如何在更一般的DOM包含两个功能。

1
+0

我会说这是最有效的答案给予沙发(不在同一元素上运行多个$()搜索)。唯一我要说的是,我会做$('#hasAccount,#hasNotAccount')而不是$('input [name =“account”]'),因为它更具体(总是只会迭代这两个元素)和id选择器通常更高效。 – lucideer 2012-04-25 21:43:19

+0

感谢您的回答! – Laurent 2012-04-26 19:03:33

相关问题