0

我正在开发一个从服务器上的文件加载“应用程序”的应用程序。目前我必须以特定顺序加载应用程序,否则它们将在位置数组中的位置错误。

这是帮助解释我的意思的代码。

function getFacebook() {
    var appname = "facebooka1thd";
    $.get("apps/"+appname+"/"+appname+".html", function(data){
        $('.AppList').append(data);
        $.cookie(appname, 1, { expires : 365 });
        checkpositions();
    });
};

function checkpositions() {
    if ($.cookie('PosApps')){
        var Poscookie = $.cookie('PosApps');
        var Pos = JSON.parse(Poscookie);

        $("#User").css({top:Pos[0].top, left:Pos[0].left});
        $("#facebooka1thd").css({top:Pos[1].top, left:Pos[1].left});
        $("#youtubea2thd").css({top:Pos[2].top, left:Pos[2].left});
    };
};

function getAppPositions() {
    var apps = $(".App"),
    positions = [];

    $.each(apps, function (index, app) {
        var positionInfo = $(app).position();

        positions.push(positionInfo);
        console.log(positionInfo);
    });
    var setPositions = JSON.stringify(positions);

    $.cookie("PosApps", setPositions, { expires : 365 });
};

我希望代码适应存在的应用程序数量以及添加或删除它们的顺序。

基本上我不知道如何解决这个问题-_-我认为我的大部分代码都必须按顺序更改才能实现这一点,因为目前位置是按照添加应用程序的顺序保存的但是当用户删除其中一个应用程序并且相对于添加应用程序的顺序设置位置时,这将无济于事。

对此的任何帮助都会很棒!

4

1 回答 1

0

我设法为自己解决了...

function checkpositions() {
    if ($.cookie('PosApps')){
        var Poscookie = $.cookie('PosApps');
        var Pos = JSON.parse(Poscookie);

        for (var i = 0; i < Pos.length; i++) {
            $("#"+Pos[i][0]).css({top:Pos[i][1].top, left:Pos[i][1].left});
        };
    };
};

function getAppPositions() {
    var apps = $(".App"),
    positions = [];

    $.each(apps, function (index, app) {
        var id = $(app).attr('id');
        var positionInfo = [id,$(app).position()];

        positions.push(positionInfo);
        console.log(positionInfo);
    });
    var setPositions = JSON.stringify(positions);

    $.cookie("PosApps", setPositions, { expires : 365 });
};

我所要做的就是制作一个二维数组,其中元素的 id 在其位置之前,并使用 Pos[i][0] 作为 id 和 Pos i .top/left 作为位置设置 CSS。希望这可以帮助任何陷入此类问题的人。另外,如果您确实遇到问题,我建议您访问此站点。他们的教程非常好,帮助我解决了这个问题。

于 2013-07-01T22:50:22.717 回答