2015-10-22 18 views
1

我想隨機選取div。我的代碼中唯一的問題是它有時會隨機選擇一個空格。我不明白爲什麼它有時會回顯一個空格。我使用chrome檢查元素來檢查,沒有空的div。我在foreach循環中做了什麼錯誤。試圖隨機選取div,但它有時會回顯空div?

var divs = $(".widget").get().sort(function(){ 
 
      return Math.round(Math.random())-0.5; //so we get the right +/- combo 
 
      }).slice(0,1); 
 
$(divs).show();
.widget{ 
 
display:none; 
 
}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script> 
 
<?php 
 

 

 
foreach ($widgets as $widget){ 
 
\t \t \t echo'<div class="widget" >'; 
 
\t \t \t echo $content; 
 
\t \t \t echo'</div>'; 
 
\t \t } 
 
?>

+2

如何'的foreach($ widget作爲$部件)'工作?該代碼不會中斷? –

+0

你的循環(或其他地方)沒有'$ content'。 – MinusFour

+0

我對JQuery不是很熟悉,但是我會說你返回一個空div,因爲DOM還沒有完成解析。您應該在負載事件或JQuerys準備就緒後執行此操作。 – Blindman67

回答

0

沒有必要對任何怪異sort函數來獲得一個隨機元素進行了jQuery集合。有一種方法可以通過eq來完成。

var $widgets = $('.widget'); 
 
var length = $widgets.length; 
 
var div = $widgets.eq(Math.floor(Math.random() * length)); 
 
div.show();
.widget { 
 
    display: none; 
 
    }
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script> 
 
<div class="widget">1</div> 
 
<div class="widget">2</div> 
 
<div class="widget">3</div> 
 
<div class="widget">4</div> 
 
<div class="widget">5</div> 
 
<div class="widget">6</div> 
 
<div class="widget">7</div>