Jquery从预定义列表中随机化div的位置

时间:2013-03-07 10:45:07

标签: javascript jquery css arrays random

我一直试图从一个数组中预定义的位置列表中随机化一个div的位置,但是没有成功,我想我可能会接近但我不知道我哪里出错了。

var positionArray = [];

    function Position(left, top) {
        this.left=left;
        this.top=top;
    }

    function rand(ar){
        return 0.5-Math.random();
    }

    var positionArray = [
          new Position(0,  0) 
        , new Position(50, 50) 
        , new Position(100,100) 
        , new Position(150,150) 
        , new Position(200,200) 
        , new Position(250,250) 
        , new Position(300,300) 
        , new Position(350,350) 
    ];

    function init() {                
            var min = 0;
            var max = 7;
            var posIndex = Math.floor(Math.random() * (max - min + 1)) + min;
            alert(posIndex)                               
            $(".start-journey-marker").css({
                top     : positionArray[posIndex].top,
                left    : positionArray[posIndex].left
            });
    };

    positionArray.sort(rand);

    init(); 

请参阅此处的示例:http://jsfiddle.net/qQWYW/

你能帮忙吗?

3 个答案:

答案 0 :(得分:1)

要使CSS topleft生效,您需要在元素中添加position : relativeposition : absolute。 (编辑:或添加position : fixed。)

此外,您的演示无效,因为您没有包含jQuery(左侧的框架面板)。

更新了演示:http://jsfiddle.net/qQWYW/1/

答案 1 :(得分:0)

这是造型问题。 只需添加

position: absolute;

.start-journey-marker选择器。

P.S。 因为你忘了包含jQuery,所以它不适用于小提琴。

答案 2 :(得分:0)

请将位置属性添加到您的css中的.start-journey-marker