2016-06-21 100 views
-1

我有一個無序的列表,接收動態數據mysql數據庫,列表返回我一些youtube鏈接與標題縮略圖和每個視頻的完整視圖,我做了一個簡單的腳本,顯示和隱藏一個div使用CSS disply none和顯示塊阻止這個div將接收鏈接,它會顯示視頻,我的問題是,只有第一個播放按鈕隱藏和顯示div,其他按鈕動態創建而不工作。點擊生成的按鈕while循環不起作用

這是我的HTML和PHP通過接收數據的銀行,同時

<div id="player"></div> 
<div class="divvideos"> 
    <ul> 
     <?php while($videolist = $resultvideos->fetch_array()){ ?> 
     <li class="listdivvideos"> 
      <button class="btplay" id="btplay"></button> 
      <img src="images/datahoraicon.png" class="imgdatahora"> 
      <ul> 
       <li><img src="http://i1.ytimg.com/vi/<?php echo $videolist['miniatura'] ?>/default.jpg"></li> 
      </ul> 
     </li> 
     <?php } ?> 
    </ul> 
</div> 

下面是簡單的腳本來顯示和隱藏DIV玩家

<script> 
    $("#btplay").click(function() { 
     if($("#player").css("display") == "none") 
      $("#player").css("display","block"); 
     else 
      $("#player").css("display","none"); 
    }); 
</script> 

我的代碼通過點擊該按鈕正常工作與ID播放它隱藏和顯示與ID播放器的div,我唯一的問題是,這個按鈕被創建了幾次,因爲它是在主線創建,返回while但只有primero按鈕隱藏和顯示div其他按鈕不起作用

+7

'id's應該是唯一的。如果您使用相同的ID創建多個元素,您希望它選擇哪一個?嘗試''('。btnplay')。on('click',()=> {});' – atmd

+0

你能用'#player'顯示部分代碼嗎? –

+0

另外,如果您使用的是jQuery,您可以使用$(「#player」)。toggle()來顯示/隱藏它們而不是if塊。 – ADyson

回答

2

首先,您的ID應該是唯一的(如上所述)。離開他們或添加一個櫃檯(最好不要離開他們)。

$(".btplay").click(function() { 

應該訣竅。

蒂普:您可以取代

<?php while($videolist = $resultvideos->fetch_array()){ ?> 
     //... 
<?php } ?> 

<?php while($videolist = $resultvideos->fetch_array()): ?> 
     //... 
<?php endwile; ?> 

而且

<?php echo $videolist['miniatura'] ?> 

<?= $videolist['miniatura']; ?> 

我認爲它使它更具可讀性,但它只是一個tipp。

+1

值得一提的是'<?='也許在你的php conf中禁用 – atmd