Я пытаюсь связать событие размытия со всеми элементами "ввода" на странице. Он имеет несколько входных элементов, есть некоторые элементы ввода даже внутри "iframe".
Я могу связать события размытия, которые находятся за пределами iframe, но не внутри.
Вот какой код я пробовал:
$('body iframe').contents().find('body').delegate('input','blur',function(e){
alert('blur');
});
$('body,iframe').children().find('input').on('blur',function(e){
alert('blur');
});
HTML-структура
<html>
<body>
<div id = abc> <!--start of abc div -->
<form>
<table>
<tr>
<input name="hello"/> <!-- able to bind event to this input -->
</tr>
</table>
</form>
</div> // end of abc div
<div id="pqr"> // start of pqr div
<iframe name="e1menuAppIframe"> <!-- iframe element (Does have more properties) -->
<html>
<body>
<div id="abc">
<form>
<table>
<tr>
<input name="hello"/> <!--not able to bind event to this input -->
</tr>
</table>
</form>
<!-- more forms -->
</body>
</html>
</iframe>
</div> <!-- end of pqr div -->
</body>
</html>
Оба не работают для элементов внутри iframe.
Существует ли общее решение для привязки ко всем входным элементам внутри страницы, несмотря на iframes.
Также есть некоторые запросы, которые загружают динамические элементы iframe на страницу, а функции делегирования не являются обязательными событиями размытия для вновь добавленных фреймов.
Я нашел приведенный ниже код для моих динамических фреймов, но он работает только для первого уровня iframe. На одной из моих страниц есть iframe внутри iframe для тех входных элементов, которые он не получает привязанными..
$('body iframe').load(function(){
$("body iframe").contents().find('input').on('blur', function() {
onblur(this);
});
});
вам нужно обратиться к объекту document
внутри этого iframe, вы не можете просто искать в jQuery в iframe. например
$("iframe").contents().find('input').on('blur', function() {
console.log(this.name);
});
в основном проблема заключается в том, что window
и iframe будут иметь отдельные контексты и документы, вы не можете просто переходить от одного к другому, вам нужно выбрать один из них в качестве контекста сначала