prettyphoto не загружается при написании href с использованием document.write - PullRequest
0 голосов
/ 26 января 2012

у меня есть несколько таких кодов

<span id="$RsC" class="menu" title="Action menu" onclick="menu(\''.$RsC.'\')">click</span>

function menu(id){ 
var d = document.getElementById(id); 
d.innerHTML ='<a href="somthing;iframe=true&amp;width=400&amp;height=170"  rel="prettyPhoto[iframe]" >Doesnt work</a>';
}

<script type="text/javascript" charset="utf-8">
jQuery.noConflict();
jQuery(document).ready(function($) {
$(".pp_pic_holder").remove();
 $(".pp_overlay").remove();
 $(".ppt").remove();
$(".gallery a[rel^='prettyPhoto']").prettyPhoto({theme:'h0mayun'});
});
</script>

проблема в том, что после нажатия "кликнуть" и написания html-ссылки плагин prettyPhoto не загружается

любая помощь будет оценена.

EDIT ------------------- Черт возьми, это снова конфликт JQuery, но чтобы он заработал, я изменил функцию на:

<script type="text/javascript" charset="utf-8">
jQuery.noConflict();
jQuery(document).ready(function($) {
$(".pp_pic_holder").remove();
 $(".pp_overlay").remove();
 $(".ppt").remove();
$(".gallery a[rel^='prettyPhoto']").prettyPhoto({theme:'h0mayun'});
});
</script>

function menu(id){ 
var d = document.getElementById(id); 
d.innerHTML ='<a href="somthing;iframe=true&amp;width=400&amp;height=170"  rel="prettyPhoto[iframe]" >Doesnt work</a>';
jQuery.noConflict();
jQuery(document).ready(function($) {
$(".pp_pic_holder").remove();
 $(".pp_overlay").remove();
 $(".ppt").remove();
$(".gallery a[rel^='prettyPhoto']").prettyPhoto({theme:'h0mayun'});
});
}

Ответы [ 2 ]

1 голос
/ 26 января 2012

И это не сработает. Вы инициализируете prettyPhoto для существующих элементов на странице после загрузки страницы. Когда вы вставляете новый элемент, плагин prettyPhoto ничего об этом не знает, потому что он уже «прикрепился» к элементам, существовавшим ранее. Вы должны инициализировать prettyPhoto после всех изменений на странице или прикрепить его после внесения изменений в обновленные элементы. Как это

function menu(id){ 
var d = document.getElementById(id); 
d.innerHTML ='<a href="somthing;iframe=true&amp;width=400&amp;height=170"  rel="prettyPhoto[iframe]" >Doesnt work</a>';
$('a', d).prettyPhoto({theme:'h0mayun'});
}

ps: я сделал простой тест на примере prettyPhoto, и он работает

function menu(id){ 
var d = document.getElementById(id); 
d.innerHTML ='<a href="images/fullscreen/3.jpg" rel="prettyPhoto[gallery1]">Test link</a>';
$('a', d).prettyPhoto();
}
0 голосов
/ 26 января 2012

Если вы делаете это $(".gallery a[rel^='prettyPhoto']").prettyPhoto({theme:'h0mayun'}); перед функцией onClick.

Вам придется делать это снова после того, как вы напишите html объекта, чтобы плагин снова инициализировался.

...