【问题标题】:Adding `click` event to child of `iframe` of `iframe` - not woking将 `click` 事件添加到 `iframe` 或 `iframe` 的子级 - 不起作用
【发布时间】:2023-04-04 11:57:01
【问题描述】:

我正在尝试向嵌套在 iframeiframe 内的元素之一添加点击事件。

这是一个 iframe .ssueContentIframe 在这个下面,还有另一个 iframe 添加为 #SmartReportTabContent1 所以在第二个 iframe 元素内,我试图添加一个这样的点击事件:

基本上,我不知道iframe 什么时候会被加载并且所有元素都将可用,以备将来添加:

$('.ssueContentIframe').contents().find( '#SmartReportTabContent1' ).find('.ui-grid-selection-row-header-buttons.ui-grid-icon-ok.ui-grid-row-selected').on('click', function(){
             alert('Hi');
         });

但不工作。等待iframe 都存在并将点击事件添加到此处的元素之一的正确方法是什么?

提前致谢!

【问题讨论】:

    标签: javascript jquery html iframe


    【解决方案1】:

    您还需要在第二个 iframe 上使用“内容”。要等待它加载,您可以在第二个 iframe 上使用“就绪”事件。

    例如:

    $("#SmartReportTabContent1").find("iframe").ready(function (){
        // do something once the iframe is loaded
    });
    

    更新

    参考this问题

    【讨论】:

    • 我可以在onDocumentReady 中使用它吗?第一个 iframe 类名是 ssueContentIframe,在里面我得到第二个 iframe #SmartReportTabContent1
    • 所以只需使用 SmartReportTabContent1 作为您的 iframe 容器
    • 我试过这样:$(document).ready(function(){ $( '#SmartReportTabContent1' ).ready(function(){ console.log('i am ready' ); }); }); 但是在准备好的功能本身上,我得到了安慰。 (当时这里根本没有 iframe)
    • ready 伪 jq 事件仅适用于 document,不适用于任何其他 DOM 元素
    【解决方案2】:

    我对此进行了编辑,首先加载第一个 iframe 并检查它是否加载良好,然后单击元素执行该功能。

    $(function(){
        $('#foo1').load(function(){
            alert("Loaded");
                $('#foo1').contents().find('iframe').contents().find('#test').on('click', function(event) {
                    alert("Working");
                });
        });
    });
    

    我在我的电脑上测试过,运行良好,记得添加库,如果不添加库将无法使用。

    只需将我使用的 ID 更改为您的 ID。

    【讨论】:

    • 我试过了,但没用。可能我在这里错了。一件事是,在加载ssueContentIframe 之后,我点击了一个链接。该链接在此处加载另一个 iframe。在新的一侧,我正在尝试添加事件
    • 更多信息是,通过angular-ng-view加载内容-
    猜你喜欢
    • 1970-01-01
    • 2011-06-04
    • 2013-02-11
    • 1970-01-01
    • 1970-01-01
    • 2014-12-16
    • 1970-01-01
    • 2012-11-15
    相关资源
    最近更新 更多