2014-04-06 87 views
2

我試圖點擊一個iframe內的元素點擊事件,但它似乎並沒有工作。我的當前設置:
的jsfiddle:http://jsfiddle.net/q4aa3/
的jQuery:jQuery:點擊iframe內的事件

$(document).ready(function() { 
    $('#this-iframe').load(function() { 
     $('#this-iframe').contents().find('img').live({ 
      click: function() { 
       alert('clicked img'); 
      } 
     }); 
    }); 
}); 

點擊iframe中的圖像上沒有發射警示,我不知道爲什麼,還是有更好的方式來實現這個?任何建議將不勝感激!

+1

iframe包含來自不同域的頁面,在這種情況下,jsfiddle結果框架將從'fiddle.jshell.net'加載,並且您的iframe正在加載'jsfiddle.net',這意味着它們是不同的域,因此您不需要有權訪問它。另外jQuery的'.load'函數從url中加載數據,它不是一個onload事件。 [jQuery加載文檔](http://api.jquery.com/load) –

+0

@PatrickEvans'.load()'也用於處理加載事件:http://api.jquery.com/load-event/ –

+0

@PatrickEvans是的我明白,jsFiddle只是我的設置演示。我使用這個域的iFrame內容也來自同一個域,因此我可以訪問它。但是這個點擊功能仍然不起作用。 – user1374796

回答

8

當您在同一個域上有iframe時,您可以使用此腳本來捕獲iframe中的點擊。不要使用.live,它是從jQuery 1.7開始分類的。

var iframeBody = $('body', $('#iframe')[0].contentWindow.document); 
$(iframeBody).on('click', 'img', function(event) { 
    doSomething(); 
}); 

您可以通過iframeBody變量操作body。