2012-05-07 83 views
2

我已經從服務器動態構建的html表。最終,它給了我一個表,看起來像:jquery hide /覆蓋視頻播放器

<div id="player"></div> 

<table id="webcam-table"> 
      <thead> 
      <tr> 
       <th>Camera Name</th> 
       <th>Date Created</th> 
      </tr> 
      </thead> 
      <tbody>    
      <tr > 
       <td onclick="DoNav('http://myserver.com:1935/recordings/myfile1.mp4');"> 
        Default camera 
       </td> 
       <td onclick="DoNav('http://myserver:1935/recordings/myfile1.mp4');"> 
        06 May 2012 07:25:01 
       </td> 
       </tr> 

      <tr > 
       <td onclick="DoNav('http://myserver.com:1935/recordings/myfile2.mp4');"> 
        Default camera 
       </td> 
       <td onclick="DoNav('http://myserver.com:1935/recordings/myfile2.mp4');"> 
        06 May 2012 07:24:47 
       </td> 
       </tr> 
... 
</tbody></table> 

如果有人點擊它調用DoNav功能可將視頻表中的行。

function DoNav(theUrl) 
{ 
var mydiv = $("#player"); 
var myvideo = $("<video id='myfileplayer' src='"+ theUrl +"' width='280' height='200' controls></video>"); 
mydiv.append(myvideo); 
$("#myfileplayer").click(function(){ 
    $(this).play(); 
}); 

} 

如果在表格中單擊一行,它會很棒。但是一旦你點擊下一行,就會在下面添加另一個玩家等等。我想用剛剛點擊的新玩家替換那裏的玩家。我已經嘗試將$("#myfileplayer").hide();添加到DoNav函數的末尾,但這只是隱藏了整個玩家。有任何想法嗎?

回答

1

您正在前一個下方追加新玩家。

function DoNav(theUrl) 
{ 

    // only add the player if it doesn't yet exist 
    if($('#myfileplayer').length == 0) { 
     var mydiv = $("#player"); 
     var myvideo = $("<video id='myfileplayer' src='"+ theUrl + 
      "' width='280' height='200' controls></video>"); 
     mydiv.append(myvideo); 
    } else { 
     $('#myfileplayer').attr("src",theUrl); 
    } 

    $("#myfileplayer").click(function(){ 
     $(this).play(); 
    }); 

} 
+0

正在替換已存在的元素上的src屬性,而不是更換整個播放器的密集程度? downvoter是否想要隱藏起來,並可能詳細說明他/她爲什麼認爲這麼糟糕?謝謝! – jmort253

+2

這很好,還增加了+1,因爲我無法想象爲什麼有人會投票開始。 – Tom

1

這很簡單,在你DoNav功能,更換

mydiv.append(myvideo); 

有:

mydiv.html(myvideo); 

這裏做的事情是,它取代了視頻DIV而不是內容(舊視頻)只需添加一個新的視頻到div。

+0

這不適合我。這是面向iDevices,不知道這是否有所作爲。 – Tom