2016-09-27 70 views
0

我想將一個單擊事件添加到嵌套在iframeiframe之內的元素之一。將`click`事件添加到iframe的`iframe`的子節點 - 不要撥打

這是一個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是否存在,並且將點擊事件添加到此處的某個元素中的正確方法是什麼?

在此先感謝!

回答

0

您還需要在第二個iframe上使用「內容」。要等待它加載,您可以在第二個iframe上使用「就緒」事件。

如:

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

更新

this問題

+0

我可以在'onDocumentReady'中使用這個嗎?第一個iframe類名稱是'ssueContentIframe',裏面我獲得第二個iframe作爲'#SmartReportTabContent1' – 3gwebtrain

+0

所以只需使用SmartReportTabContent1作爲你的iframe容器 – Stormhashe

+0

我試過像這樣:'$(document).ready(function(){ $ ('#SmartReportTabContent1').ready(function(){ console.log('我準備好了'); }); });'但是就緒函數本身我得到了安慰。 (當時這裏根本就沒有iframe) – 3gwebtrain

0

嗯,我編輯這一點,首先要做的第一iframe的負載,並檢查它裝好,然後做功能點擊元素。

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

我在我的電腦上測試過它,並且工作完美,記得addind庫,如果你不添加庫,它將無法工作。

只需更改我用於ID的ID。

+0

我試過了,但沒有工作。可能是我在這裏錯了。一件事是,加載'ssueContentIframe'後,我點擊一個鏈接。該鏈接在這裏加載另一個iframe。在新的一方,我試圖添加事件 – 3gwebtrain

+0

更多的信息是,通過'angular'-'ng-view'加載內容 - – 3gwebtrain