2012-04-25 94 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

相關問題