【问题标题】:Call jQuery from a Fancybox iframe?从 Fancybox iframe 调用 jQuery?
【发布时间】:2010-10-11 00:15:20
【问题描述】:

我使用iframe 在 Fancybox 中加载了一个页面。但是当我尝试在 iframe 中执行 jQuery 函数时,它将无法正常工作。如何访问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");


    }
  );                

});

【问题讨论】:

    标签: javascript jquery iframe fancybox


    【解决方案1】:

    您需要在 iframe 中再次包含 jQuery,或者尝试...

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

    或者如果太长,做一个包装器

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

    【讨论】:

    • 谢谢,但无法正常工作。一定还是做错了什么。如果有帮助,我在上面提供了一个代码示例。谢谢!
    • @Pjack iframe 在同一个域上吗?此外,您从第 2 行中的函数返回 false。这将停止运行其余匿名函数。
    • 是的,它在同一个域中。哎呀,我把它移到那里测试一些东西,我把它移回了最后。但是它仍然不起作用。谢谢
    • 我是个白痴。我解决了这个问题。我有一个包含我所有功能的 js 文件。好吧,我使用了一个可以使用不同标题模板的脚本。页面上调用的标题没有包含我的 js 文件。添加后,它起作用了。呃。感谢您的回答。是的,我只需要再次包含 jQuery 和我的 js 文件。
    • @Pjack 很高兴你知道了 :)
    【解决方案2】:

    如果两个文档都依赖于同一个域,您可以通过在语句前加上“父级”来访问 jQuery。

    例子:

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

    注意第二个参数设置为文档。建议这样做,否则上下文将是父窗口的文档,而不是 iframe 内的文档。 但是由于我不知道这种使用是否真的安全,特别是如果您使用外部插件,我更喜欢附加的。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2011-03-30
      • 2012-02-09
      • 2012-07-12
      • 2023-04-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多