Я пытаюсь закрыть FancyBox из iframe, но parent.$
всегда undefined
. Это мой IFrame JavaScript:
<script type='text/javascript'
src='http://ajax.googleapis.com/ajax/libs/jquery/1.3.2/jquery.min.js'>
</script>
<script type="text/javascript">
jQuery(document).ready(function($){
(function($) {
$.fn.closeFancyBox = function() {
$(this).click(function() {
parent.$.fancybox.close();
});
};
})(jQuery);
$('#cancel').closeFancyBox();
});
});
</script>
Замена parent.$.fancybox.close();
с alert('clicked');
работает просто отлично. Я не понимаю, почему parent.$
является undefined
, когда iframe находится в том же домене.
Я использую WordPress 2.9.1, с плагином FancyBox для Wordpress.
- главная страница:
//server.local/web/test/index.php
- IFrame страница:
//server.local/web/test/wp-content/plugins/wp-test/test.htm
Первый из этих URL', главная страница, вторая страница IFrame; server.local
- мой домашний тестовый сервер.
Любые идеи? Я могу использовать весь исходный код, если это будет полезно.
К сожалению, должен сказать, что я знаю об этом; js, который я включил, был фрагментом. Я отредактировал свой вопрос, чтобы отразить это - передача $ означает, что мне не нужно использовать «jQuery». – Aleksandr
@Aleksandr Передача '$' в 'iframe' вообще не влияет на родительскую страницу. Фактически, вы включаете полностью отдельный экземпляр jQuery в 'iframe'. Если вы заметили, что вы написали, вы передаете '$', но ссылаетесь на 'parent. $'. Это как будто у вас есть var var = 1; alert (obj.a); 'Вы не ожидали, что два элемента будут ссылаться на одно и то же значение, если в коде не было присвоения. –
Вы правы, это имеет смысл. Однако, используя следующий код: 'jQuery ('# cancel'). Click (function() {parent.jQuery.fancybox.close();});' Я все еще получаю ошибки 'undefined' в Firebug:' parent. jQuery.fancybox undefined'. У вас есть идеи, почему это может быть? Спасибо за вашу помощь! Я все еще очень новичок в JavaScript и кодировании в целом. – Aleksandr