jQuery旋转图像(使用旋转插件)每次单击旋转+/- 90度

时间:2012-10-16 02:49:14

标签: jquery image jquery-plugins rotation

我正在使用这个jQuery插件:http://code.google.com/p/jqueryrotate/wiki/Documentation

我有插件工作和一切,但我想要做的是单击按钮旋转图像,每次单击按钮它连续旋转+/- 90度,而不仅仅是一定程度。我不太确定如何通过这个插件实现这一目标。

理想情况下,下面的代码会做我想要的,但事实并非如此。

$("body").on("click", ".theater-wrapper img", function(){

    $(".theater-wrapper .current").rotate(+90);

});

4 个答案:

答案 0 :(得分:2)

这样的东西?

$("body").on("click", ".theater-wrapper img", function(){

    $(".theater-wrapper .current").rotate(getNextAngle());

});

nextAngle = 0;
function getNextAngle() {
    nextAngle += 90;    
    if(nextAngle >= 360) {
        nextAngle = 0;
    }
    return nextAngle;
}

可能不是什么大问题,但为了避免获得大量数字,您可以在需要时将值重置为0.

答案 1 :(得分:2)

工作演示 http://jsfiddle.net/jKYkT/

点击 + - 按钮进行角度旋转

希望这符合原因:)

<强>码

newangle = 0;

$('input').click(function() {
    if ($(this).attr('class') == "minus")
        operation = "-";
    else
        operation = "+";

    alert(operation)
    var angle = next(operation);
    $("#image").rotate(angle);
});

function next(oper) {
   if (oper == "+")
      newangle += 90;
    else
      newangle -= 90;

   if (newangle >= 360) newangle = 0;

    return newangle;

}


​

答案 2 :(得分:0)

我没有看过插件,但我假设它是使用跨浏览器支持的CSS3转换旋转。它总是需要一个特定的角度,所以你必须用某种变量跟踪你当前的角度。一个好的解决方案可能是HTML5数据标记,您可以在每次单击时递增,特别是如果您希望在DOM中有多个旋转图像。所以说你的HTML是这样的:

<div class='image_wrap'>
    <img class='image_to_rotate' />
    <div class='rotate_btn' data-rotate='0'></div>
</div>

因此,当用户单击旋转按钮时,它将抓取此变量并将其递增90,然后将新值存储在同一位置,以便在下次单击时将其递增。您的jQuery可能如下所示:

$('.rotate_btn').click(function(){
    //Grab the current set angle
    var angle = parseInt($(this).data('rotate')) + 90;

    //Rotate the image
    $(this).siblings('.image_to_rotate').rotate(angle);

    //Store new angle for next increment
    $(this).data('rotate', angle);
})

这未经过测试,但您应该有足够的时间在这里继续。如果您需要进一步的指导,请查看.data上的jQuery文档。

答案 3 :(得分:0)

var rotation = 0;
$("body").on("click", ".theater-wrapper img", function(){
    rotation +=90;
    $(".theater-wrapper .current").rotate({ animateTo:rotation });
});

var rotation = 0;
$("body").on("click", ".theater-wrapper img", function(){
    rotation +=90;
    var rotation_angle_mod = rotation%360;
    $(".theater-wrapper .current").rotate(rotation_angle_mod);
});