Добавление обработчика событий к iframe использование JQuery

По сути, у вас была правильная функция, но вам нужно использовать .eq (index), чтобы фактически воздействовать на этот конкретный индекс в функции foreach. Это похоже на доступ к индексам в массивах, таких как randomArray (0) => 1.

$('div').each(function(index) {
  var x = $(this).css('background-color');
  $("div p").eq(index).text(index+x);
  console.log(index+x);
});
.red {
    background-color:red; 
}

.cyan {
  background-color:cyan;
}

.green {
  background-color:green;
}
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<div class="red"><p></p></div>
<div class="cyan"><p></p></div>
<div class="green"><p></p></div>

9
задан ConroyP 14 February 2009 в 19:20
поделиться

3 ответа

contentWindow iframe window объект. Вы хотите iframe document вместо этого:

$(document.getElementById('iframe_id').contentWindow.document).keydown(function() {
    // my func
});

Обратите внимание, что я не уверен, как jQuery реагирует на элементы из других окон/кадров.

15
ответ дан 4 December 2019 в 11:08
поделиться

Функция $ заменяет потребность в document.getElementById

$('iframe_id').contentDocument.keydown(function() {
   // logic
});
0
ответ дан 4 December 2019 в 11:08
поделиться

Просто помните: насколько я понимаю, это никогда не сработает, если содержимое iframe является междоменным. В конечном итоге вы получите ошибки прав доступа: Отказано в разрешении для http: // ... , чтобы получить свойство HTMLDocument.nodeType из http: // ... . Браузеры ограничивают права родительского дочернего домена одним и тем же доменом.

4
ответ дан 4 December 2019 в 11:08
поделиться
Другие вопросы по тегам:

Похожие вопросы: