Использование jQuery для стиля iFrame - PullRequest
11 голосов
/ 15 декабря 2010

Я прочитал около дюжины подобных вопросов здесь и перепробовал все, что мог придумать, но я явно что-то делаю не так, потому что просто не могу заставить его работать.

HTML :

<iframe name="posts" id="posts" src="edit.php">

JS :

$(document).ready(function() {
    $('iframe#posts').ready(function() {
        var frame = $('iframe#posts').contentDocument;
        console.log($('#adminmenu', frame));
        $('#adminmenu', frame).css('display', 'none !important');
    });
});

Консоль выводит:

[<ul id=​"adminmenu" style=​"display:​ none !important;​ ">​…​</ul>​]

, что является правильным элементом,Однако display:none никогда не применяется в браузере.Кроме того, я нахожу странным, что консоль выводит со встроенным стилем, даже если она устанавливается после оператора console.log() (не уверен, связано это или нет, но не похоже, что это должно быть).

Кто-нибудь знает, почему это не работает?

Я должен также добавить, что в основном теле документа также есть <ul id="adminmenu">, но я решил, предоставив контекст iframe, который должен бытьнацеливание на iframe.

Ответы [ 2 ]

21 голосов
/ 15 декабря 2010

Вы пытались использовать функцию contents() в jQuery вместо contentDocument?

$("iframe#posts").contents().find("#adminmenu").hide();

Обновлено: изменено .css("display", "none !important") на просто .hide().

4 голосов
/ 15 декабря 2010

Для iframe, попробуйте метод «load» вместо «ready». Также используйте «content ()» вместо «contentDocument» для получения содержимого iframe.

$(document).ready(function() {
    $('iframe#posts').load(function() {
        var frame = $('iframe#posts').contents();
        /* other code */
    });
});
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...