我試圖從iframe中關閉FancyBox,但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 for 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 2010-02-09 10:04:05
@Aleksandr在'iframe'中傳遞'$'根本不會影響父頁面。事實上,你在'iframe'中包含了一個完全獨立的jQuery實例。如果你注意到你寫了什麼,你傳遞'$',但是引用'parent。$'。就好像你有'var a = 1; alert(obj.a);'你不會指望這兩個項目引用相同的值,除非代碼中有某個分配。 – 2010-02-09 13:58:26
你是對的,這是有道理的。然而,使用下面的代碼:'jQuery('#cancel')。click(function(){parent.jQuery.fancybox.close();});' 我仍然在Firebug:'parent中得到'undefined'錯誤。 jQuery.fancybox是未定義的。你有什麼想法,爲什麼這可能是? 感謝您的幫助!一般來說,我仍然對JavaScript和編碼非常陌生。 – Aleksandr 2010-02-09 15:02:58