Ответ 1
Вы пытались использовать функцию jQuery contents()
вместо contentDocument
?
$("iframe#posts").contents().find("#adminmenu").hide();
Обновлено: изменено .css("display", "none !important")
на просто .hide()
.
Я читал о дюжине подобных вопросов здесь и пытался все, о чем я мог думать, но я, очевидно, делаю что-то неправильно, потому что я просто не могу заставить его работать.
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.
Вы пытались использовать функцию jQuery contents()
вместо contentDocument
?
$("iframe#posts").contents().find("#adminmenu").hide();
Обновлено: изменено .css("display", "none !important")
на просто .hide()
.
Для iframe попробуйте использовать метод "load" вместо "ready". Кроме того, используйте 'contents()' вместо 'contentDocument', чтобы получить содержимое iframe.
$(document).ready(function() {
$('iframe#posts').load(function() {
var frame = $('iframe#posts').contents();
/* other code */
});
});