выберите непосредственный родительский элемент iframe из iframe - PullRequest
0 голосов
/ 10 ноября 2018

У меня есть разметка ниже:

<html>
    <body>
        <div class="aaa"></div>
        <div class="aaa"></div>
        <div class="aaa">
            <iframe>
                <form id="myform">

                </form>
            </iframe>
        </div>
        <div class="aaa"></div>
    </body>
</html>

При загрузке iframe он содержит форму «#myform». После отправки формы мне нужно запустить определенный обратный вызов, основанный на div.aaa, который является непосредственным родителем iframe.

Любое решение, основанное на parent.document, не может мне сильно помочь, так как я не знаю идентификатор div.aaa.

То, что я хотел бы сделать, это что-то вроде $('#myform').closest('div.aaa'), но, конечно, это не получается, потому что любой элемент за пределами самого окна iframe не может быть доступен таким образом.

Как лучше всего получить доступ к непосредственному родителю этого iframe div, который на самом деле является элементом в его родительском документе?

Оба parent и iframe имеют одинаковое происхождение.

Ответы [ 2 ]

0 голосов
/ 10 ноября 2018

Вы можете перейти к родительскому окну и найти конкретный iframe в родительском документе, сопоставив contentWindow элемента frame с известным окном внутри iframe

Что-то вроде:

$(window.parent.document).find('iframe').filter(function() {
  return this.contentWindow === window;
}).parent().doSomething()

DEMO

0 голосов
/ 10 ноября 2018

Я бы рекомендовал использовать .closest('.aaa'). Но если вы можете назначить уникальный идентификатор, вы можете использовать .parent('.uniq_selector'), который немного более производительный.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...