繁体   English   中英

单击使用JQuery对表中的单元格进行动画处理

[英]Animating a swap of cells in a table on click using JQuery

我正在尝试使用JQuery在JavaScript中制作一个简单的纸牌游戏。 在游戏的一部分中,您应该单击由divtablica[i][j] )组成的“表”( tablica )中的一行,以交换该行中的单元格(以将内容放入单元格中)在正确的列中)。 这是相关的代码段:

for (var j=0; j<odgovor1.length; j++)
            for (var i=1; i<3; i++)
            {
                tablica[i][j]=document.createElement("div");
                tablica[i][j].setAttribute("class","rijecUDrugomDijelu");
                if (i===1) tablica[i][j].appendChild(document.createTextNode(odgovor1[j]));
                else if (i===2) tablica[i][j].appendChild(document.createTextNode(odgovor2[j]));
                tablica[i][j].style.top=228+27*j;
                tablica[i][j].style.left=-153+110+153*i;
                tablica[i][j].onclick=eval(
                        "(function()"+
                        "{"+
                        "var tmp=tablica[1]["+j+"].style.left;"+
                        "tablica[1]["+j+"].style.left=tablica[2]["+j+"].style.left;"+
                        "tablica[2]["+j+"].style.left=tmp;"+
                        "tmp=odgovor1["+j+"];"+
                        "odgovor1["+j+"]=odgovor2["+j+"];"+
                        "odgovor2["+j+"]=tmp;"+
                        "})"
                        );
                pozadina.appendChild(tablica[i][j]);
            }

当用户单击该表中的一行时,该行中的单元格将被交换,并且在字符串数组odgovor1odgovor2正确跟踪了表的内容。 但是,它们交换时没有任何动画,它们会立即交换。 当我尝试将JQuery动画应用于单元( divtablica[1][j]tablica[2][j] ,程序崩溃。 你知道该怎么做吗?
再次向您保证,上面的代码现在可以正常工作,但是当我尝试使用JQuery动画而不是简单地交换属性style.left ,它崩溃了。

使用对象属性代替eval似乎可行:

for (var j=0; j<odgovor1.length; j++)
            for (var i=1; i<3; i++)
                    {
                    tablica[i][j]=document.createElement("div");
                    tablica[i][j].setAttribute("class","rijecUDrugomDijelu");
                    if (i===1) tablica[i][j].appendChild(document.createTextNode(odgovor1[j]));
                    else if (i===2) tablica[i][j].appendChild(document.createTextNode(odgovor2[j]));
                    tablica[i][j].style.top=228+27*j;
                    tablica[i][j].style.left=-153+110+153*i;
                    tablica[i][j].redak=j;
                    tablica[i][j].onclick=
                            function()
                            {
                            var tmp=tablica[1][this.redak].style.left;
                            $(tablica[1][this.redak]).animate({left:(tablica[2][this.redak].style.left)},500);
                            $(tablica[2][this.redak]).animate({left:(tmp)},500);
                            tmp=odgovor1[this.redak];
                            odgovor1[this.redak]=odgovor2[this.redak];
                            odgovor2[this.redak]=tmp;
                            }
                    pozadina.appendChild(tablica[i][j]);
                    }

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM