События jQuery не работают в iframe?

У меня возникают проблемы с focus(function(){}) и blur(function(){}) внутри script, которые вложены в динамически загруженный iframe..

Ниже находится тег script В том случае, когда iframe динамически загружается. Любое событие, которое я вбрасываю в разметку script, не работает, простые вещи, такие как $('input').click(function(){alert('fired')});, даже не запускаются. Я не уверен, что происходит.

Да, jQuery загружается в iframe в голове.

<script type="text/javascript">
// <![CDATA[
    $(document).ready(function() {

        $('.form .field-content').find('input, select, textarea').focus(function() {
            $(this).closest('.field').addClass('focused');
        });

        $('.form .field-content').find('input, select, textarea').blur(function() {
            $(this).closest('.field').removeClass('focused');
        });

        $('.form .field-content').find('input, select').keypress(function(e) {
            if (e.which == 13) {
                e.preventDefault();
                $(this).closest('.form').find('.button').first().click();
            }
        });

        $('.form .button').focus(function() {
            $(this).addClass('focused');
        });

        $('.form .button').blur(function() {
            $(this).removeClass('focused');
        });

        // focus on first field
        $('.form .field-content').find('input, select, textarea').first().focus();

    });
// ]]>
</script>

Ответ 1

Возможно, проблема в том, что содержимое iframe не было загружено, попробуйте

$("#Your-Iframe-Id").load(function (){
    // write your code here
});

Ответ 2

для динамически загружаемого содержимого вы должны взглянуть на jQuery функция live()

Ответ 3

Является ли iframe загрузкой URL-адреса, который является другим доменом, чем родительский контейнер? Если это так, вы не сможете использовать javascript для управления его содержимым.

Ответ 4

Я думаю:

$('.form .field-content').find('input, select, textarea').focus(function() {
        $(this).closest('.field').addClass('focused');
    });

должен быть:

$('.form .field-content').find('input, select, textarea').each(function(index) {
        $(this).focus(function(){
           alert('element ' + index + ' focused');
         });
         alert('bind focus event in element ' + index);
    });

приветствий.

Ответ 5

Это может иметь какое-то отношение к безопасности в вашем браузере. Запутайтесь с некоторыми настройками для зоны и посмотрите, поможет ли это.

Какой браузер вы используете?