2012-01-10 57 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 
}