удаление 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, время: 12:27. |