удаление iframe
Всем привет!
Есть div, внутрь которого добавляются и удаляются iframe. При удалении iframe остаётся рамка от него. Как с этим бороться? При добавлении потом нового iframe, он добавляется после этой рамки, те остаётся пустое место( дырка ) от предыдущего удалённого фрейма. <div id='frames_div'> </div> в родительском окне добавляется новый iframe: $("#add_btn").click(function(){ var v = $(document.createElement("iframe")); v.attr("src","form1.html"); $("#frames_div").append( v ); }); удаляется он сам из себя, кнопка удаления в нём же самом $("#close_btn").click( function(){ var v = $(this).parent(); v.remove(); }); есть какой-то способ корректного удаления фрейма самого из себя, или надо кнопку удаления помещать в родительский фрейм? |
Цитата:
$("#close_btn").click( function(){ $("#frames_div iframe",parent.document.body).remove(); }); |
#frames_div это id-шник div-элемента, куда помещаются все iframe, у ifame'ов нет id-шников, непонятно по какому принципу их заводить...( как в бд наверное.. )
|
или тут #frames_div iframe удаляются все дочерние iframe от #frames_div ???
мне нужно, чтобы удалялся именно тот iframe, которому принадлежит #close_btn, на которую нажали |
zaytsewa,
Если iframe не один - присвойте им уникальные id и удаляйте по id К примеру: #frames_div #iframe_1 |
не могу разобраться в чём причина
var arr = document.location.search.split("?id="); var str = "#frames_div #"+arr[1] alert( $(str,parent.document.body).prop('tagName') ) выводит undefined, те какой-то не тот элемент находит... вообщем похоже на то, что какая-то проблема строковая ума не приложу какая именно var str = "#frames_div #"+arr[1] и $(str) |
zaytsewa, потому что запятая должна быть взята в кавычки :)
|
эээ не поняла... там один аргумент в скобках что ли??
|
я думала что по смыслу первый селектор второй относительно какого родителя...
так var str = "#frames_div #"+arr[1]+","+parent.document.body alert(str) alert( $(str).prop('tagName') ) бред получается... parent.document.body - это ведь не строка, а объект |
var arr = document.location.search.split("?id="); var str = "#frames_div #"+arr[1] alert( $(str+', '+parent.document.body).prop('tagName') ) Можно вот так попробовать. :) И вообще: $(str).parent('body').prop('tagName'); |
первая запись видимо вообще некорректна, тк алерт не вызывается
вторая возвращает undefined |
zaytsewa,
Чем дальше в лес ... Приведите минималистический HTML код для блока с фреймами и ссылки на пару фреймов с кнопками |
первая запись некорректна, алерт не срабатывает
вторая выдаёт undefined |
HTML код
|
есть версия, что можно так window.parent.$( ‘#idElement‘ );
но так у меня тоже не работает( |
это form1.html, он вставляется несколько раз в виде фреймов
содержит кнопку для удаления и скрытия самого себя <body> <button id='close_btn'>X</button><button id='hide_btn'>-</button> </body> это главное окно index.html, фреймы вставляются в div ( пример - то что закомментировано ) фреймы вставляются при нажатии кнопки добавить <div id='frames_div'> <!--<iframe src='form1.html'> </iframe>--> </div> <button id='add_btn'>Добавить</button> |
zaytsewa,
<div id="add_btn"> <iframe src="реальная ссылка" ... и т.д |
Цитата:
Есть тестовая страница с оным ? |
нет всё в домашнем локалхосте
|
хотя могу куда-нибудь залить
|
залила, можно посмотреть http://zaytsewa.yomu.ru/avia/
|
zaytsewa,
Сделаю ближе к полуночи |
<iframe src="form1.html"/> <iframe src="form1.html?id=864.3636696461892" id="864.3636696461892"/> <iframe src="form1.html?id=282.5240789059157" id="282.5240789059157"/> <iframe src="form1.html?id=977.3967193243343" id="977.3967193243343"/> function Close() { var a = location.search.split('=')[1]; parent.$('#'+a).remove(); } Вот Вам удаление:) |
попробовала, не работает(
|
zaytsewa, странно, попробуйте задать ID без точек и желательно с буквы.
|
думаю дело в конкатенации строк, в магических правилах кавычек и тд...
попробую конечно.. |
проверила - точки не виноваты
|
zaytsewa,
Контент данного скрипта $(document).ready(function(){ $("#add_btn").click(function(){ //var v = $(document.createElement("div")); var v = $(document.createElement("iframe")); var id = Math.random()*1001; v.attr("src","form1.html?id="+id); v.attr("id", id); //alert(v.attr("id")); //v.load("form1.html"); $("#frames_div").append( v ); //alert("addButton"); }); $(window).load(function() { //var v = $(document.createElement("div")); //v.load("form1.html"); var v = $(document.createElement("iframe")); v.attr("src","form1.html"); $("#frames_div").append( v ); }); /* function close_form( close_btn ) { var v = $(close_btn).parent(); v.remove(); } function minimize( hide_btn ) { var v = $(close_btn).parent(); var isHidden = ( $( "tr:eq(1)").css("display") == 'none'); for ( i = 1; i < 3; ++i ) { if ( !isHidden ) v.find($("tr:eq("+i+")")).css('display','none'); else v.find($("tr:eq("+i+")")).css('display',''); } if ( !isHidden ) $(hide_btn).text('[ ]'); else $(hide_btn).text('-') }*/ }); замените на этот function Lload(a){ //Удаление фрейма $(a).contents().find("body #close_btn").click(function(){ $(a).parent('.div_wrap').remove(); }); //Скрытие фрейма $(a).contents().find("body #hide_btn").click(function(){ //$(a).wrap("<div class=div_wrap></div>"); $(a).addClass("HideIframe").hide(); $(a).parent().append('<button class="show_btn">show</button>'); }); //Раскрытие скрытого фрейма $("button.show_btn").live("click",function(){ $(this).parent().find('.HideIframe').show().removeClass('HideIframe'); $(this).remove(); }); }; $(document).ready(function(){ $("#add_btn").click(function(){ var v = $(document.createElement("iframe")); v.attr("onload","Lload(this)"); var id = Math.random()*1001; v.attr("src","form1.html?id="+id); v.attr("id", id); $("#frames_div").append( v ); v.wrap("<div class=div_wrap></div>"); }); $(window).load(function() { $("#add_btn").click(); }); }); ================================ И добавьте кусок стиля на главную <style> div.div_wrap{ border:red solid 1px; //float:left; display:inline-block; } </style> |
Зы - Можно укоротить скрипт,если кнопки скрытия удаления фрейма вынести из фрейма на главную в div обрамление каждого фрейма
|
если вынести на главную - то некрасиво будет
|
вы будете смеяться, но у меня всё равно не работает
|
zaytsewa,
Воткните замененный скрипт(и добавку к стилю) на тот сайт с примером - я гляну (тестировал в Опере |
там примерно так и есть, я только стиль не применила, он функциональный или для красивости??? у меня chrome
|
zaytsewa,
Если ссылка та же - скрипт в хидере на главной - пока старый Стиль(кроме бордеров) - функциональный |
zaytsewa,
Просто выполните чисто рекомендации по замене ( исходники свои сохраните) посколь комбинация Вашего творчества с ошибками 1. Нун повторить удачный результ 2. Доводить до своих хотелок |
теперь должно быть 1 в 1, посмотрите
|
zaytsewa,
Заработало - но пока ток в Опере -(* пол-часа - час на правку |
да в ff и safari проверила не работает
|
Цитата:
Поправил скрипт: function Lload(a){ //Удаление фрейма $(a).contents().find("body #close_btn").click(function(){ $(a).parent('.div_wrap').remove(); }); //Скрытие фрейма $(a).contents().find("body #hide_btn").click(function(){ //$(a).wrap("<div class=div_wrap></div>"); $(a).addClass("HideIframe").hide(); $(a).parent().append('<button class="show_btn">show</button>'); }); //Раскрытие скрытого фрейма $("button.show_btn").live("click",function(){ $(this).parent().find('.HideIframe').show().removeClass('HideIframe'); $(this).remove(); }); }; $(document).ready(function(){ $("#add_btn").click(function(){ var id = Math.random()*1001; var src= "form1.html?id="+id; var v = '<div class=div_wrap>\ <iframe src="'+src+'" onload="Lload(this)" id="'+id+'"/>\ </iframe></div>'; $("#frames_div").append( v ); }); }); $(window).load(function() { $("#add_btn").click(); }); |
потрясающе, спасибо!!!
а что изменилось? на глаз не видно |
Часовой пояс GMT +3, время: 19:11. |