2012-01-10 72 views
0

如何壓縮下面的jQuery代碼?如何壓縮此jQuery代碼?

//FIRST CODE 
jQuery('.expand-two').click(function(){ 
    jQuery('.content-two').slideToggle('fast'); 
}); 
jQuery('.expand-two').toggle(function() { 
jQuery('.content-two').slideDown('slow'); 
jQuery(this).find("img").css({ 
    "-webkit-transform": "rotate(90deg)", 
    "-moz-transform": "rotate(90deg)", 
    "filter": "progid:DXImageTransform.Microsoft.BasicImage(rotation=1)" 
}); 
}, function() { 
jQuery('.content-two').slideUp('slow'); 
jQuery(this).find("img").css({ 
    "-webkit-transform": "rotate(0deg)", 
    "-moz-transform": "rotate(0deg)", 
    "filter": "progid:DXImageTransform.Microsoft.BasicImage(rotation=0)" 
}); 
}); 
//SECOND CODE 
jQuery('.expand-three').click(function(){ 
    jQuery('.content-three').slideToggle('fast'); 
}); 
jQuery('.expand-three').toggle(function() { 
jQuery('.content-three').slideDown('slow'); 
jQuery(this).find("img").css({ 
    "-webkit-transform": "rotate(90deg)", 
    "-moz-transform": "rotate(90deg)", 
    "filter": "progid:DXImageTransform.Microsoft.BasicImage(rotation=1)" 
}); 
}, function() { 
jQuery('.content-three').slideUp('slow'); 
jQuery(this).find("img").css({ 
    "-webkit-transform": "rotate(0deg)", 
    "-moz-transform": "rotate(0deg)", 
    "filter": "progid:DXImageTransform.Microsoft.BasicImage(rotation=0)" 
}); 
}); 

我怎麼能夠有多個DIV類插入一行?不必爲每個代碼片段編寫這麼多的代碼?

非常感謝!

+3

' jQuery('。expand-two,.expand-three')'選擇這兩個元素。您可以使用它來幫助組合功能。 – 2012-01-10 18:28:36

+0

你想要做什麼?['.toggle'](http://api.jquery.com/toggle/)?它不需要兩個函數參數。 – meagar 2012-01-10 18:29:12

+2

@meagar它沒有真正記錄它在這裏使用的方式,但它確實有效。 '.toggle(function(){},function(){})'將在兩個函數之間切換。 – Jasper 2012-01-10 18:32:38

回答

3

我看到的一個想法 - 爲元素旋轉做一些功能 - 例如。

function setRot(jqElm, angle) { 
    var angleIe = Math.round(angle/90); 
    jqElm.css({ 
     "-webkit-transform": "rotate(" + angle + "deg)", 
     "-moz-transform": "rotate(" + angle + "deg)", 
     "filter": "progid:DXImageTransform.Microsoft.BasicImage(rotation="+ angleIe +")" 
    }); 
} 

然後在代碼中對其進行

setRot(jQuery(this).find("img"), 90); 

你可以做的第二件事是用逗號查詢使用多個選擇(如果可能的話) -

jQuery('.expand-two, .expand-three').... 
+0

但是,我怎麼能這樣做,在某種意義上它不會消滅代碼,對於所有這些?考慮到我在頁面上有多個這樣的實例。 – 2012-01-10 18:45:43

+0

呃?這個函數會修改你作爲參數傳遞的實例,並且將其設置爲刪除所有旋轉設置(4 x 5行,帶有函數(8 + 4行)) – SergeS 2012-01-10 18:49:38

+0

這是我遇到的問題... http:// jsfiddle。 net/b6BKz/ – 2012-01-10 18:52:43

2
jQuery('.expand-two, .expand-three') - 

它允許選擇兩者並將代碼最小化。

+0

我將它們作爲類而不是ID的原因是因爲頁面上有多個此代碼實例,並且當我嘗試上面列出的代碼時,它會關閉連接到此代碼而不是單獨連接的每個div。雖然謝謝! :) – 2012-01-10 18:38:51

1
jQuery('.expand-two, .expand-three').click(){ 
    value = $(this). attr("class"); 
    value = value.substr(value.indexOf("-")); 
    doAnim(value); 
} 

function doAnim(value){ 
    $('.expand-'+value).toggle() ... some code 
}