Fancybox внутри div, не работает после события onclick - PullRequest
0 голосов
/ 04 июля 2011

Привет всем и большое спасибо за ваше время.В основном то, что я разрабатываю, это длинный список видео на веб-странице.У меня был тег div, который включает в себя, скажем, 10 ссылок на видео.Эти ссылки открывают HTML-код iframe, в который встроено реальное видео.Так что на родительской странице нет видео, есть только ссылки, у якорей есть href = "video.html", в video.html есть видео.Сначала все загружается нормально, но потом мне также нужна функция сортировки.Я сделал свою функцию сортировки видео.Нажмите на видео, чтобы изменить.Это работает так, что содержимое внутри 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({

до

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

Ответы [ 2 ]

1 голос
/ 04 июля 2011

использование live()

пример

вместо $('#id').click(function(){}); использование

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

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

0 голосов
/ 04 июля 2011

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

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

...