.each()函数不生成唯一值

时间:2013-06-14 01:13:51

标签: jquery loops jquery-animate each

我有一堆街区,我正试图沿着一条方形'轨道'移动,就像火车一样。

    var itemLoop = function(){
        $("li").each(function(getLeft, getTop) {
            getLeft = parseInt($(this).css('left'));
            getTop = parseInt($(this).css('top'));

            if (getTop > 0 && getLeft < 5) {
                $(this).css('top', (getTop - 5 ) + "px");
            } else if (getTop > 140) {
                $(this).css('left', (getLeft - 5) + "px");
            } else if (getLeft > 140) {
                $(this).css('top', (getTop + 5 ) + "px");
            } else {
                $(this).css('left', (getLeft + 5 ) + "px");
            }
        });
    }

setInterval(itemLoop, 100);

然而,对于上述情况,这些街区不会绕过拐角,而是会粘在一起。

我想也许是因为所有lis都使用了相同的getTop / Left值,但我不知道我怎么能编写这个脚本。

1 个答案:

答案 0 :(得分:2)

您需要使用position() function而不是css函数。所以不要这样:

getLeft = parseInt($(this).css('left'));
getTop = parseInt($(this).css('top'));

这样做:

var pos = $(this).position();

getLeft = parseInt(pos.left);
getTop = parseInt(pos.top);

以下是一个有效的例子:http://jsfiddle.net/judeosborn/rd2Ky/