0

我有一些按钮我试图在点击时旋转 45 度,但是因为我使用了一个变量(或者我认为这就是原因),当点击一个按钮时它会旋转 45 度,然后当另一个按钮被点击时,因为变量已经增加了 45 度,变成了 90 度。有没有办法在没有变量的情况下执行此操作或修改我的设置,这样就不会发生这种情况?

这是演示中的代码和设置:http: //jsbin.com/atinap/16/edit

$(".info_btn").css("-webkit-transition", "-webkit-transform 0.25s ease-in-out");

var info_btn_DEG = 0;

$(".info_btn").toggle(function() {
$(this).closest('.article_wrapper').find('.description').slideDown("250");
info_btn_DEG += 45;
$(this).css("-webkit-transform", "rotateZ(" + info_btn_DEG + "deg)");
$(this).fadeTo("200", 0.65);
}, function() {

$(this).closest('.article_wrapper').find('.description').slideUp("200");
info_btn_DEG += 45;
$(this).css("-webkit-transform", "rotateZ(" + info_btn_DEG + "deg)");
$(this).fadeTo("250", 0.3);
});

对此的任何帮助都会非常感谢

4

1 回答 1

6

您需要为每个元素关联一个角度,而不是所有元素都有一个全局角度 - 使用.data()

function increaseAngle(elem) {
    var oldAngle = $(elem).data('angle');
    var newAngle = oldAngle + 45;
    $(elem)
        .css("-webkit-transform", "rotateZ(" + newAngle + "deg)")
        .data('angle', newAngle);
}

$(".info_btn")
    .css("-webkit-transition", "-webkit-transform 0.25s ease-in-out")
    .data('angle', 0);
    .toggle(function() {
        $(this).closest('.article_wrapper').find('.description').slideDown(250);
        increaseAngle(this);
        $(this).fadeTo(200, 0.65);
    }, function() {
        $(this).closest('.article_wrapper').find('.description').slideUp(200);
        increaseAngle(this);
        $(this).fadeTo(250, 0.3);
    });
于 2012-11-08T13:33:14.443 回答