Как установить угол поворота на лету с помощью подключаемого модуля jQuery ui rotatable?

Я использую плагин jQuery UI Rotatable, чтобы иметь возможность вращать динамически созданные объекты. Кажется, я не могу заставить его работать. Какие-нибудь мысли?

Вот мой код и jsfiddle

HTML:

<div id="container"></div>

JS:

var ajax_response=[
            {title:'HDMI',style:{transform:'rotate(22.5deg)',width:'25%', height:'5%',letf:'58.2627%',top:'7.29814%' }},
            {title:'Silent',style:{transform:'rotate(22.5deg)',width:'25%', height:'5%',letf:'0%',top:'7.29814%' }}
        ];
        $(ajax_response).each(function(index,item){
            $('#container').append('<div class="slots" style="width:'+item.style.width+'; height:'+item.style.height+'; left:' + item.style.left + '; top:' + item.style.top + '; transform:'+item.style.transform+'">'+item.title+'</div>')
        });
        $('#container').find('.slots').each(function(){            
        $(this).rotatable({degrees:$(this)[0].style.transform});
        });

1 ответ

Вот решение: пример jsfilddle

JS:

$(document).ready(function(){
 var ajax_response=[
            {title:'HDMI',style:{transform:'rotate(22.5deg)',width:'25%', height:'5%',letf:'58.2627%',top:'7.29814%' }},
            {title:'Silent',style:{transform:'rotate(22.5deg)',width:'25%', height:'5%',letf:'0%',top:'7.29814%' }}
        ];
        $(ajax_response).each(function(index,item){
            $('#container').append('<div class="slots" style="width:'+item.style.width+'; height:'+item.style.height+'; left:' + item.style.left + '; top:' + item.style.top + '; transform:'+item.style.transform+'">'+item.title+'</div>')
        });
       
        $('#container').find('.slots').each(function(){              
        $(this).rotatable({degrees:getRotationDegrees($(this))});
        //$(this).rotatable({degrees:20});
        });
         //$('#container').find('.slots').rotatable();
function getRotationDegrees(obj) {
var matrix = obj.css("-webkit-transform") ||
obj.css("-moz-transform")    ||
obj.css("-ms-transform")     ||
obj.css("-o-transform")      ||
obj.css("transform");
if(matrix !== 'none') {
    var values = matrix.split('(')[1].split(')')[0].split(',');
    var a = values[0];
    var b = values[1];
    var angle = Math.round(Math.atan2(b, a) * (180/Math.PI));
} else { var angle = 0; }

if(angle < 0) angle +=360;
return angle;
}        
});
Другие вопросы по тегам