2013-03-15 100 views
0

我想洗牌我的div表的单元格。我尝试使用.shuffle()插件,但无法使其工作。这里是我的代码:使用jquery随机播放一些div

<div class="sprites"> 
    <div class="row"> 
     <span id="draggable0" class="draggable"></span> 
     <span id="draggable1" class="draggable"></span> 
     <span id="draggable2" class="draggable"></span> 
    </div> 
    <div class="row"> 
     <span id="draggable3" class="draggable"></span> 
     <span id="draggable4" class="draggable"></span> 
     <span id="draggable5" class="draggable"></span> 
    </div> 
    <div class="row"> 
     <span id="draggable6" class="draggable"></span> 
     <span id="draggable7" class="draggable"></span> 
     <span id="draggable8" class="draggable"></span> 
    </div> 
</div> 

这就是我如何试图洗牌:

$(document).ready(function() { 
    $('.sprites').shuffle(); 
}); 

你知道我怎么会打乱所有这些东西?

+0

是随机播放功能的东西,你自己创建的?或者它是从另一个插件中拉出来的? – Tom 2013-03-15 17:16:07

+0

你想做什么?将div中的跨度或shuffle div放在较大的div内部? – ATOzTOA 2013-03-15 17:17:02

+0

我想随机随机洗牌我的跨度,所以他们可以在任何行中的任何div。我试图使用shuffle插件:) – Alkatell 2013-03-15 17:21:45

回答

5

Fiddle

这只会洗牌sprites类的元素。你想在.sprites内洗牌div,对吧?

$('.sprites div').shuffle(); 

编辑:正确的语法实际上可能是:

$.shuffle('.sprites div'); 
+0

他们甚至可能想要'$('。sprites span')',但我不确定是否jquery能够正确处理。 – Xymostech 2013-03-15 17:21:45

+0

是的,'$('。sprites span')'可能就是那个 - 刚刚测试过...哦,'$('。draggable')'也可以工作 – Raad 2013-03-15 17:23:00

0

shuffle()洗牌传递给它的元素......你需要通过你的物品箱内吧...

只需使用这样的:Live Demo

$('.draggable').shuffle(); 

$('.row').shuffle(); 

更新

使用此功能重新启用拖动。

$(document).ready(function() { 
     $('.draggable').draggable(); 
}); 

function shuffle() { 
    $('.draggable').draggable("destroy"); 
    $('.draggable').shuffle(); 
    $('.draggable').draggable(); 
} 

洗牌代码

(function(d){ 
    d.fn.shuffle=function(c){ 
     c=[]; 
     return this.each(function() 
      { 
       c.push(d(this).clone(true)) 
      }).each(function(a,b) 
      { 
       d(b).replaceWith(c[a=Math.floor(Math.random()*c.length)]); 
       c.splice(a,1) 
      }) 
    }; 
    d.shuffle=function(a){ 
     return d(a).shuffle() 
    } 
})(jQuery); 
+0

嗨,谢谢!我的工作是,当我的页面加载时,我的跨度被正确洗牌,但我不能拖动它们:/ – Alkatell 2013-03-15 17:33:29

+0

我不确定,但我猜这是因为'shuffle()'正在使用'replaceWith()'以便于重新排序,这意味着你需要重新启动'Draggable'。 – 2013-03-15 17:40:23

+0

@AlexiBoulon更新了我对可拖动的答案,也更新了小提琴... – ATOzTOA 2013-03-15 18:11:58