2010-10-11 65 views
2

我已经使用iframe在Fancybox中加载了一个页面。但是,当我尝试在iframe内执行jQuery函数时,它不起作用。如何访问iframe页面或内容,以便我可以在该页面上执行jQuery? 我试过下面,但没有奏效。从Fancybox iframe调用jQuery?

jQuery(document).ready(function(){ 
parent.jQuery("#showcasef", jQuery.browser.msie ? parent.jQuery('body')[0] : parent.jQuery(document)).live('submit', function(e) { 
        e.preventDefault(); 
     return false; 
     var pho_id = jQuery('#pho_id').attr('value'); 
     var showcase =jQuery("#showcase_pho option:selected").val(); 
     var action = "showcasep"; 
     alert("here"); 


    } 
);     

});

回答

2

您将需要再次包括jQuery的那iframe里面,或者尝试...

parent.$('body').text('Does it work?'); 

或者,也许如果太长,使包装

function $() { 
    return parent.jQuery.call(this, arguments); 
} 
+0

谢谢,但不能得到它的工作。必须仍然做错了什么。如果有帮助,我会提供上面的代码示例。谢谢! – 2010-10-11 01:56:02

+0

@Pjack是否在同一个域上的iframe?另外,您从第二行的函数返回false。这将停止匿名函数的其余部分被运行。 – alex 2010-10-11 02:12:43

+0

是的,它位于同一个域。哎呀,我把它移到那里去测试一些东西,我把它移回到最后。但它仍然不起作用。 Thx – 2010-10-11 02:53:35

1

如果这两个文件依赖在同一个域中,您可以通过在您的语句中添加“parent”来访问jQuery。

实施例:

<body> 
<script> 
alert(parent.$('body',document).html()) 
</script> 
</body> 

通知的第二参数设置为文件。这是推荐的,否则上下文将是父窗口的文档,而不是iframe中的文档。 但是,因为我不知道这种使用是否真的很安全,特别是如果你使用外部插件,我更喜欢其他的包括。