Javascript-форум (https://javascript.ru/forum/)
-   jQuery (https://javascript.ru/forum/jquery/)
-   -   как изменить содержимое frame из jQuery (https://javascript.ru/forum/jquery/7357-kak-izmenit-soderzhimoe-frame-iz-jquery.html)

ze8s 28.01.2010 10:50

как изменить содержимое frame из jQuery
 
Помогите разобратся.
Собственно есть следующий фреймсет
...
<script>
// здесь jQuery
$(document).ready(function(){
$('#a').attr('src',url+'a.html'); // работает
});
</script>

<frameset frameborder="1" rows="*,115,35">
<frame name="a" id = "a" src="">
<frame name="b" id = "b" src="b.html">
<frame name="c" id = "c" src="c.html">
</frameset>
...
в фреймах в каждом *.html есть <div id=text></div> в который и нужно подставлять некий текст.

Как мне обращатся из jQuery к <div id=text> в каком нибудь из этих фреймов?
Пробую $('#b\\.text').html() = 'test string'; , не работает

var $frametmp = $('#b').contents().find("body #text");
$frametmp.html() = "test string"; //не работает...

sysya 28.01.2010 11:23

Попробуй так
var frametmp = $("#text");
frametmp.html() = "test string";
Хотя лучше не так, а так
var frametmp = $("#text");
frametmp.html("test string");

ze8s 28.01.2010 11:38

нет, не работает.
$('#b').contents().find('#text').html() = "test test"; тоже неработает...

sysya 28.01.2010 14:41

Кажись с фреймами jquery не работаtт, поискал чучуть в гугле, нашёл тока это
var firstframe=window.parent.frames[0]
- это так выбирается первый фрейм в наборе, то значит придётся тебе без библы писать:)

sysya 28.01.2010 15:27

Цитата:

Сообщение от ze8s (Сообщение 42445)
нет, не работает.
$('#b').contents().find('#text').html() = "test test"; тоже неработает...

а вот так будет работать:)
$('#b').contents().find('#text').html("test test");

ze8s 28.01.2010 15:48

Нет, не работает. Похоже придется без библы.

j0ker13 31.01.2010 17:21

работает с фреймами)

попробуй:
Цитата:

$("#b").ready(function(){
$("#b").contents().find("#text").html("test test");
})
так же попробуй: не объединять их в фреймсет и загружать в ифрейме

ze8s 31.01.2010 22:27

Нет. не работает!
<html>
  <head>
    <script type="text/javascript" src="js/jquery-1.4.min.js"></script>
</head>
<body>
<script>
$(document).ready(function(){ 
	$("#b").ready(function(){
	$("#b").contents().find("#text").html("test test");
	});
});
</script>
<iframe  id = "a" src="a.html"></iframe>
<iframe  id = "b" src="a.html"></iframe>
<iframe  id = "c" src="a.html"></iframe>
</body>
</html>


a.html
<html>
  <head>
  </head>
  <body>
  <div id="text">a</div>
  </body>
 </html>

j0ker13 31.01.2010 22:45

пусть другие попробуют:
<html>
<head>
<title>12345</title>
<script type="text/javascript" src="jquery.min.js"></script>
<iframe src="/test.html" id="fr"></iframe>
<script>
$("#fr").ready(function(){
	alert($("#fr").contents().find("#tt").html());
$("#fr").contents().find("#tt").html("12345678");
})
</script>
</body>
</html>

test.html=>
<html>
<title>12345</title>
<body></body>
<head><div id="tt">testest</div></head>
</html>

jQuery JavaScript Library v1.3.2
у меня алерт выскакивает и текст меняется)

add:
в фф работает. в опере нет(

dd_smol 08.03.2015 19:20

Конечно автору поста это уже не поможет. Но Гугл этот топик выдает в первых строках поиска и возможно кому будит полезно. jQuery функции по мимо селектора можно вторым параметром передать контекст исполнения (То есть в данном случае объект документа нужного фрейма). Выглядеть будит это примерно так.
$('#text', window.frames['d'].document).text('Test string');

Если требуется в каждом фрейме добавлять текст то нужно перебрать фреймы в цикле.
var
	arrFrames = [].slice.call(window.frames),
	frame = null;
	
while ( frame = arrFrames.shift() ) {
    $('#text', frame.document).text('Test string');
}


Часовой пояс GMT +3, время: 11:06.