Javascript Jquery.offset()setter不工作

Javascript Jquery.offset()setter不工作,javascript,jquery,css,Javascript,Jquery,Css,我正在为一些站点制作一个函数,它可以帮助将对象分组到一个div中,然后将其更改为group、resize、rotate等。我在将编辑对象的参数保存到div中时遇到了一个问题。在调整大小后,我必须更正它们在工作区中的位置,但jquery.offset似乎不起作用 function grouped_objects_saving(merged_block_id){ var count = $("#"+merged_block_id+" > .merged").length; v

我正在为一些站点制作一个函数,它可以帮助将对象分组到一个div中,然后将其更改为group、resize、rotate等。我在将编辑对象的参数保存到div中时遇到了一个问题。在调整大小后,我必须更正它们在工作区中的位置,但jquery.offset似乎不起作用

function grouped_objects_saving(merged_block_id){ 
    var count = $("#"+merged_block_id+" > .merged").length;
    var angle = transform_to_angle(merged_block_id);
    var scaleX = transform_to_scale(merged_block_id, "x");
    var scaleY = transform_to_scale(merged_block_id, "y");
    var brows = browser();
    var topOff = [];
    var leftOff = [];
    var objId = [];
    var width = [];
    var height = [];
    var imageAngle = [];
    var resultAngle = [];
    var transform = "";
    var check = false;
        switch(brows){
            case "Chrome":
                transform = $('#'+merged_block_id).css('-webkit-transform');
            break;
            case "IE":
                transform = $('#'+merged_block_id).css('-ms-transform');
            break;
            case "Firefox":
                transform = $('#'+merged_block_id).css('-moz-transform');
            break;
            default:
                transform = $('#'+merged_block_id).css('transform');
            break;
        }
        for (i=0; i<count; i++) {
            objId[i] = $("#"+merged_block_id+" > .merged").eq(i).attr('id');
            topOff[i] = $("#"+merged_block_id+" > .merged").eq(i).offset().top;
            leftOff[i] = $("#"+merged_block_id+" > .merged").eq(i).offset().left;
            width[i] = $("#"+objId[i]).width();
            height[i] = $("#"+objId[i]).height();
            imageAngle[i] = transform_to_angle(objId[i]);
            resultAngle[i] = imageAngle[i]+angle;
            $("#"+objId[i]).offset({top: topOff[i], left: leftOff[i]});
        }
        for (i=0; i<count; i++) {
            $("#"+objId[i]).appendTo($('#workarea'));
            switch(brows){
                case "Chrome":
                    $("#"+objId[i]).css({'-webkit-transform': 'rotate('+resultAngle[i]+'deg)'});
                break;
                case "IE":
                    $("#"+objId[i]).css({'-ms-transform': 'rotate('+resultAngle[i]+'deg)'});
                break;
                case "Firefox":
                    $("#"+objId[i]).css({'-moz-transform': 'rotate('+resultAngle[i]+'deg)'});
                break;
                default:
                    $("#"+objId[i]).css({'transform': 'rotate('+resultAngle[i]+'deg)'});
                break;
            }
            $("#"+objId[i]).width(width[i]*scaleX);
            $("#"+objId[i]).height(height[i]*scaleY);
            $("#"+objId[i]).appendTo($('#'+merged_block_id));
            //$("#"+objId[i]).addClass("editable selectable"); 
            if (i==count-1) {
                check = true;
            }
        }
        if (check==true){
            for (i=0; i<count; i++) {
                console.log('$("#'+objId[i]+'").offset({top:'+topOff[i]+', left:'+leftOff[i]+'});');
                $("#"+objId[i]).offset({top: topOff[i], left: leftOff[i]});
            }
        }
    return true;
}
如果复制来自console的字符串:

console.log('$("#'+objId[i]+'").offset({top:'+topOff[i]+', left:'+leftOff[i]+'});'
比如说

$("#custom-image-58clx").offset({top:393.089111328125, left:407.17822265625});
并在控制台中使用它,这样可以正确设置偏移量


我不知道为什么它不能从代码中工作。

我仍然不知道为什么原始代码不能工作,并且没有应用偏移量,但是在将代码更改为下面的代码后,它工作得很好

function grouped_objects_saving(merged_block_id, type){ 
    var count = $("#"+merged_block_id+" > .merged").length;
    var angle = transform_to_angle(merged_block_id);
    var scaleX = transform_to_scale(merged_block_id, "x");
    var scaleY = transform_to_scale(merged_block_id, "y");
    console.log("scaleX: " + scaleX);
    console.log("scaleY: " + scaleY);
    var brows = browser();
    var transform = "";
        switch(brows){
            case "Chrome":
                transform = $('#'+merged_block_id).css('-webkit-transform');
            break;
            case "IE":
                transform = $('#'+merged_block_id).css('-ms-transform');
            break;
            case "Firefox":
                transform = $('#'+merged_block_id).css('-moz-transform');
            break;
            default:
                transform = $('#'+merged_block_id).css('transform');
            break;
        }
    var topOff = [];
    var leftOff = [];
    var objId = [];
    var width = [];
    var height = [];
    var imageAngle = [];
    var resultAngle = [];
    for (i=0; i<count; i++) {
        objId[i] = $("#"+merged_block_id+" > .merged").eq(i).attr('id');
        topOff[i] = $("#"+merged_block_id+" > .merged").eq(i).offset().top;
        leftOff[i] = $("#"+merged_block_id+" > .merged").eq(i).offset().left;
        width[i] = $("#"+objId[i]).width();
        height[i] = $("#"+objId[i]).height();
        imageAngle[i] = transform_to_angle(objId[i]);
        resultAngle[i] = imageAngle[i]+angle;
        $("#"+objId[i]).offset({top: topOff[i], left: leftOff[i]});
        console.log("resultAngle: "+ resultAngle[i]);
        console.log("ObjId: "+objId[i]);
        console.log("topOff: "+topOff[i]);
        console.log("leftOff: "+leftOff[i]); 
    }
   for (i=0; i<count; i++) {
               $("#"+objId[i]).removeAttr('style');
               $("#"+objId[i]).appendTo($('#workarea'));
               $("#"+objId[i]).css({
                   'width': width[i]*scaleX+"px",
                   'height': height[i]*scaleY+"px",
                   '-webkit-transform': 'rotate('+resultAngle[i]+'deg)',
                   '-ms-transform': 'rotate('+resultAngle[i]+'deg)',
                   '-moz-transform': 'rotate('+resultAngle[i]+'deg)',
                   'transform': 'rotate('+resultAngle[i]+'deg)',
                   'position': 'absolute'
               }).offset({top: topOff[i], left: leftOff[i]});
        }
    }
    return true;
}

我想这是由错误的行动顺序造成的

可能选择器在运行时找不到任何东西?请尝试console.log$+objId[i]。如果找不到任何内容,则长度将记录为0。它始终返回1。控制台中有任何错误吗?我发现如果删除字符串$+objId[i]。请附加到$+merged\u block\u id;偏移量可以工作,所以看起来问题在于父div中的位置。但无论如何我不明白为什么。偏移量可以正确工作,控制台不能从代码中工作…@Pete控制台中没有任何错误。
function grouped_objects_saving(merged_block_id, type){ 
    var count = $("#"+merged_block_id+" > .merged").length;
    var angle = transform_to_angle(merged_block_id);
    var scaleX = transform_to_scale(merged_block_id, "x");
    var scaleY = transform_to_scale(merged_block_id, "y");
    console.log("scaleX: " + scaleX);
    console.log("scaleY: " + scaleY);
    var brows = browser();
    var transform = "";
        switch(brows){
            case "Chrome":
                transform = $('#'+merged_block_id).css('-webkit-transform');
            break;
            case "IE":
                transform = $('#'+merged_block_id).css('-ms-transform');
            break;
            case "Firefox":
                transform = $('#'+merged_block_id).css('-moz-transform');
            break;
            default:
                transform = $('#'+merged_block_id).css('transform');
            break;
        }
    var topOff = [];
    var leftOff = [];
    var objId = [];
    var width = [];
    var height = [];
    var imageAngle = [];
    var resultAngle = [];
    for (i=0; i<count; i++) {
        objId[i] = $("#"+merged_block_id+" > .merged").eq(i).attr('id');
        topOff[i] = $("#"+merged_block_id+" > .merged").eq(i).offset().top;
        leftOff[i] = $("#"+merged_block_id+" > .merged").eq(i).offset().left;
        width[i] = $("#"+objId[i]).width();
        height[i] = $("#"+objId[i]).height();
        imageAngle[i] = transform_to_angle(objId[i]);
        resultAngle[i] = imageAngle[i]+angle;
        $("#"+objId[i]).offset({top: topOff[i], left: leftOff[i]});
        console.log("resultAngle: "+ resultAngle[i]);
        console.log("ObjId: "+objId[i]);
        console.log("topOff: "+topOff[i]);
        console.log("leftOff: "+leftOff[i]); 
    }
   for (i=0; i<count; i++) {
               $("#"+objId[i]).removeAttr('style');
               $("#"+objId[i]).appendTo($('#workarea'));
               $("#"+objId[i]).css({
                   'width': width[i]*scaleX+"px",
                   'height': height[i]*scaleY+"px",
                   '-webkit-transform': 'rotate('+resultAngle[i]+'deg)',
                   '-ms-transform': 'rotate('+resultAngle[i]+'deg)',
                   '-moz-transform': 'rotate('+resultAngle[i]+'deg)',
                   'transform': 'rotate('+resultAngle[i]+'deg)',
                   'position': 'absolute'
               }).offset({top: topOff[i], left: leftOff[i]});
        }
    }
    return true;
}