Fancybox внутри div, не работает после события onclick

Привет всем и большое спасибо за ваше время. По сути, я разрабатываю длинный список видео на веб-странице. У меня был тег div, который включает, скажем, 10 ссылок на видео. Эти ссылки открывают HTML-код iframe, в который встроено фактическое видео. Таким образом, на родительской странице нет видео, только ссылки, якоря имеют href="video.html", в video.html есть видео. Сначала все загружается нормально, но потом мне также нужна функция сортировки. Я сделал свою функцию сортировки, которая сортирует видео. Onclick видео меняется. Как это работает, содержимое внутри div изменяется с помощью .innerHTML = "". Содержимое меняется, и я могу видеть новые ссылки на видео и изображения предварительного просмотра, однако, когда я нажимаю на изображения, ссылка href открывается в новом окне или родительском окне, не уверен, но не важно, потому что Fancybox делает не открывается, я пробовал разные вещи, но до сих пор нет результатов. Итак, вопрос, который я задаю, заключается в том, почему Fancybox не работает при динамическом изменении тегов привязки. Пожалуйста помоги

Хорошо, спасибо, я точно не знаю, как использовать .live и .bind, но я посмотрю на это. А пока вот мой код

<div id="mask">
</div>
<script type="text/javascript" language="javascript">
populate();
function populate()
{
var mask=document.getElementById('mask');
mask.innerHTML = '';
mask.innerHTML = allvideos[3] + allvideos[0];
}
//Then allvideos[3] for example would be like <a href="videos.html"/>
//So up to this part everything works. But now if i try and do
</script>
<div onclick="change();" >doesntmatter</div>
<script>
//And the change function
function change() {
var mask=document.getElementById('mask');
mask.innerHTML = '';
mask.innerHTML = allvideos[3] + allvideos[0];
} 
</script>   

Так что в основном та же самая функция, но fancybox перестает работать. И прямо сейчас код Fancybox вызывается в начале следующим образом:

$(document).ready(function() { $("a.videos").fancybox({ 

===== РЕШЕНО =====

я должен был изменить

$(document).ready(function() {$("a.videos").fancybox({

to

$(document).ready(function() {
_$('a.video').live('mouseenter', function(){_
$(this).fancybox({

person Elliot    schedule 04.07.2011    source источник
comment
Я не думаю, что кто-то сможет помочь, не видя кодовых страниц или рабочих примеров.   -  person jfriend00    schedule 04.07.2011
comment
Пробовал несколько вещей, все еще не работает   -  person Elliot    schedule 04.07.2011


Ответы (2)


Сразу после того, как вы изменили свои элементы с помощью javascript (например, когда вы сделали .innerHTML = ""), вам нужно снова вызвать исходный код, включая вызов вашего плагина fancybox,

Вы также можете попробовать использовать .live() вместо .bind().

person Edgar Villegas Alvarado    schedule 04.07.2011
comment
как мне сделать это живым $(document).ready(function() { $(a.videos).fancybox({ - person Elliot; 04.07.2011

используйте 1_

пример

вместо $('#id').click(function(){});use

$('#id').live('click',function(){}); 

live будет применяться к динамически добавляемым объектам

person Kanishka Panamaldeniya    schedule 04.07.2011
comment
хорошо, прямо сейчас мой код активирует fancybox следующим образом $(document).ready(function() { $(a.videos).fancybox({});}); так как бы я изменил это? - person Elliot; 04.07.2011