Привязать к событиям внутри динамически созданного iframe

Мне нужно связать с событием (например, click на произвольном <input>) внутри iframe, который создается динамически после того, как пользователь выполнит определенное действие. Код, который добавляет iframe И код внутри iframe не является моим, и я никак не могу его изменить (это панель администратора CMS).

Как я могу слушать события, используя jQuery 1.6 (опять же, это не мой выбор, я застрял с ним). Я думал, что delegate() может быть тем, что я хочу:

$('body').delegate('iframe input', 'click', function(e) {
    alert('bingo?');
});

Но вышеописанное не отображается при нажатии на ввод. Ниже, однако, работает, как ожидалось:

$('body').delegate('input', 'click', function(e) {
    alert('bingo?');
});

Но это вне iframe.

src of iframe указывает на ту же область, очевидно.

Приветствуется любая помощь или просто продукт в правильном направлении.

Ответы

Ответ 1

Этот 'iframe input' не выделяет input элементы внутри iframe.

Вы можете связать событие, например

$('body iframe').contents().find('input').bind('click',function(e) {
    alert('bingo?');
 });

Я думаю, вы также можете использовать что-то вроде

$('body iframe').contents().find('body').delegate('input','click',function(e) {
    alert('bingo?');
 });

Чтобы определить, была ли полностью загружена iframe, используйте метод, описанный в этом ответе fooobar.com/info/129371/...

Добавить в основной/родительский документ:

function iframeLoaded() {
    $('body iframe').contents().find('input').bind('click',function(e) {
        alert('bingo?');
     });
}

Добавить в документе iframe:

window.onload = function() {
    parent.iframeLoaded();
}

Или используйте

$('body iframe').load(function(){
     $('body iframe').contents().find('input').bind('click',function(e) {
            alert('bingo?');
         });
});