2012-04-27 3 views
1

Мой текущий скрипт немного сломан. Щелчок по ссылке в таблице успешно создает мой div overlay. Затем я закрываю свой div и нажимаю на другую ссылку, и оверлей div открывается снова, кнопка закрытия перестает работать.Open/Close Div Overlay

Я предполагаю, что проблема заключается в том, что DOM не распознает мои пустые divs после использования «replaceWith».

Любая помощь будет оценена по достоинству.

<table id="tableBin" border="0"> 
    <tr> 
     <th>name</th> 
     <th>description</th> 
    </tr> 
<tbody> 
    <tr> 
     <td><a href="clip/location/A001C012_111129_R1VL.mov">A001C012_111129_R1VL.mov</a></td> 
     <td>Adipiscing elit. Fusce bibendum, leo non.</td> 
    </tr> 
    <tr> 
     <td><a href="clip/location/A001C012_111130_R1VL.mov">A001C012_111130_R1VL.mov</a></td> 
     <td>Consectetur adipiscing elit. Fusce bibendum, leo non.</td> 
    </tr> 
</tbody> 

</table> 

<div id="overlay"> 
    <div id="blackOut" class="hide"> 
     <div id="box" class="hide"> 
      <div id="controls" class="hide"><a href="#"><img border="0" alt="close" width="25px" hieght="25px" src="images/close.png"></a></div> 
     </div> 
    </div> 
</div> 

<script> 
    $("#tableBin a").on("click", function(e) { 
     e.preventDefault(); 
     var url = $(this).attr("href"); 
     var video = jQuery('<embed width="640" height="375" ShowControls=1 src="'+url+'" /></embed>'); 

     $('#blackOut').removeClass("hide").addClass("blackOut"); 
     $('#box').removeClass("hide").addClass("box"); 
     $('#controls').removeClass("hide").addClass("controls"); 
     $('#box').append(video); 
    }); 
</script> 

ответ

1

Это похоже на работу:

http://jsfiddle.net/aramk/WesNb/2/

$(document).ready(function() { 
    $("#tableBin a.video").click(function(e) { 
      e.preventDefault(); 
      var url = $(this).attr("href"); 
      var video = $('<embed width="640" height="375" ShowControls=1 src="'+url+'" /></embed>'); 

      $('#overlay').removeClass("hide"); 
      $('#blackOut').removeClass("hide").addClass("blackOut"); 
      $('#box').removeClass("hide").addClass("box"); 
      $('#controls').removeClass("hide").addClass("controls"); 
      $('#video-container').removeClass("hide").html(video); 
     }); 

     $("#close-button").click(function(e) { 
      $('#overlay').addClass("hide"); 
      $('#video-container').addClass("hide").html(""); 
      return false; 
     }); 
}); 
​ 

Я не был уверен, что если вы хотите, чтобы заменить игровое видео или нет, поэтому я добавил контейнер, у которого его содержимое заменено загруженным видео на каждый клик.

Кроме того, ваш исходный код заменил все, когда был щелкнут поближе - это очень разрушительно и не поддаётся контролю. Изменение чего-либо в HTML будет означать изменение всего в JS - в строке - что очень грязно.

+0

Извините, Арам, я прищурился. Div снова открывается, но кнопка закрытия перестает работать. : -/ – ENev

+0

Хмм, как насчет сейчас? –

+0

Являются ли # кнопки закрытия и # видео-контейнера новыми элементами или просто ids на img и видео? Проблема, с которой я, похоже, имею $ ('# video-container'). AddClass ("hide"). Html (""); удаляет изображение моей кнопки закрытия. – ENev

0

Попробуйте

$("#box img").on("click", function(e) { 
     $('#overlay').html('<div id="blackOut" class="hide"><div id="box" class="hide"><div id="controls" class="hide"><a href="#"><img border="0" alt="close" width="25px" hieght="25px" src="images/close.png"></a></div></div></div>'); 
    }); 

вместо

+0

Упс, мне нужно сделать коррекцию. Tte link работает снова, но кнопка закрытия перестает работать после первого раза. – ENev

Смежные вопросы