Javascript-форум (https://javascript.ru/forum/)
-   Элементы интерфейса (https://javascript.ru/forum/dom-window/)
-   -   Не могу удалить клонируемые элементы (https://javascript.ru/forum/dom-window/23956-ne-mogu-udalit-kloniruemye-ehlementy.html)

ViktorCore 13.12.2011 12:32

Не могу удалить клонируемые элементы
 
Элементы из списка, по нажатию на чекбокс - клонируются в нижнюю часть страницы, по повторному нажатию должны удаляться, но почему-то не удаляются.
Вот код спсика:

<? printf ('<tr><td><p id="consultation"><input type="radio"  name="consultation"
id="MainConsult" value="%s" checked>
<strong>Юридическая консультация онлайн</strong></p></td><td>$%s</td></tr>
',$Service1price["price"], $Service1price["price"]);

printf ('<tr><td><p><input type="checkbox"  name="FizDogovor" value="%s">
Разработка лицензионного договора для Физ. Лица</p></td> <td>$%s</td></tr>
',$Service2price["price"], $Service2price["price"]);
printf ('<tr><td><p><input type="checkbox"  name="FirmDogovor" value="%s">
Разработка лицензионного договора для Предпринимателей</p></td>
<td>$%s</td></tr>',$Service2price["price"], $Service2price["price"]);
printf ('<tr><td><p><input type="checkbox"  name="Negotiations" value="%s">
Представительство в переговорном процессе</p></td>
<td>$%s </td></tr>',$Service5price["price"], $Service5price["price"]);
printf ('<tr><td><p><input type="checkbox"  name="TradeMark" value="%s">
Регистрация Торговой Марки</p></td>
<td>от $%s</td></tr>',$Service6price["price"], $Service6price["price"]); ?>
<tr><td><p><input type="checkbox"  name="FizDogovor" value="">
Создание Франчайзинга (увеличение доходов от ИС)</p></td>
<td>от $1000</td></tr>
<? printf ('<tr><td><p><input type="checkbox"  name="LawService" value="%s">
Ваш юридический отдел (абонентское обслуживание)</p></td>
<td>$%s/месяц</td></tr>',$Service7price["price"], $Service7price["price"]); 
printf ('<tr><td><p><input type="checkbox"  name="LawOptimum" value="%s">
Оптимизация юридической составляющей предприятия</p></td>
<td>$%s</td></tr>',$Service8price["price"], $Service8price["price"]); 
printf ('<tr><td><p><input type="checkbox"  name="CourtSucsessChance" value="%s">
Оценка судебных рисков, и шансов выиграть Суд (цена)</p></td>
<td>$%s</td></tr>',$Service3price["price"], $Service3price["price"]); 
printf ('<tr><td><p><input type="checkbox"  name="Agrremants" value="%s">
Внесудебное решение споров с Интеллектуальной Собственностью</p></td>
<td>$%s</td></tr>',$Service10price["price"], $Service10price["price"]);
printf ('<tr><td><p><input type="checkbox"  name="CourtTrial" value="%s">
Судебное представительство для Предприятий и Предпринимателей</p></td>
<td>$%s</td></tr>',$Service11price["price"], $Service11price["price"]);

printf ('<tr><td><p id="consultation"><input type="radio"  name="consultation" 
id="BigConsult" value="%s">
<strong>Юридическая консультация для крупных <br/>Владельцев Интеллекутальной Собственности
</strong></p></td><td>$%s</td></tr>',$Service12price["price"], $Service12price["price"]); 

printf ('<tr><td><p><input type="checkbox"  name="NeotiationPack" value="%s">
Комплекс услуг «Представительство при переговорах»</p></td>
<td>$%s</td></tr>',$Service13price["price"], $Service13price["price"]);
printf ('<tr><td><p><input type="checkbox"  name="FizCourt" value="%s">
Ваш Юридический Департамент</p></td>
<td>$%s/месяц</td></tr>',$Service14price["price"], $Service14price["price"]);
printf ('<tr><td><p><input type="checkbox"  name="LawAudit" value="%s">
Юридический аудит Интеллектуальной Собственности</p></td>
<td>$%s</td></tr>',$Service15price["price"], $Service15price["price"]);
printf ('<tr><td><p><input type="checkbox"  name="Monitor" value="%s">
Мониторинг нарушения Ваших прав на Интеллектуальную Собственность</p>
</td><td>$%s</td></tr>',$Service16price["price"], $Service16price["price"]); ?>


А вот код ЯвСкрипта:
// Элементы списка добавляются в онлайн договор
$('p:has(input[type="checkbox"]), p input[type="checkbox"]').toggle(
function(){ $(this).children('input').attr('checked', true); 
$(this).addClass('selected');

var serviceCopy = $(this).clone(); 
serviceCopy.id = $(this).clone().children('input').attr('name') + "cloned";
alert (serviceCopy.id);
$('#Padress').after(serviceCopy); 
},

function(){ $(this).children('input').removeAttr('checked'); 
$(this).removeClass('selected'); 
var removeCopy = '#' + $(this).children('input').attr('name') + "cloned"; 
$(removeCopy).remove();


});


В итоге объект клонируются, но выбрать и удалить его почему-то не могу. Возникает вопросы - получилось ли присвоить идентификатор? В чем ошибка, и как решить?

ViktorCore 20.12.2011 02:38

Так никто помочь не может?

FINoM 20.12.2011 06:58

ViktorCore, может. И с радостью поможет, если ты представишь проблему в более читабельном виде.

trikadin 20.12.2011 07:44

Цитата:

Сообщение от FINoM
И с радостью

Ну, насчёт радости спорно... Но поможем)

ViktorCore 20.12.2011 13:59

есть абзацы Р внутри которых размещен Инпут типа чекбокс.

По нажатию на абзац - весь абзац копируется ниже на страницу, чекбокс выделяется, и задний фон абзаца меняет цвет.

По второму нажатию на этот же абзац - выделение абзаца убиреатеся, выделение чекбокса снимается, и клонированный ниже на странице элемент - удаляется.

Код привел такой как есть в программе.

Мне надо понять - как удалить клон, по щелчку на абзац?

Если что-то в коде конкретное непонятно - спрашивайте буду обьяснять что к чему. Так с ходу, сложно понять что понимается под "представить проблему в более читабельном виде".

ksa 20.12.2011 14:25

Цитата:

Сообщение от ViktorCore
Мне надо понять - как удалить клон, по щелчку на абзац?

У тебя для этого есть чекбокс. ;) Проверь его состояние...

Цитата:

Сообщение от ViktorCore
Код привел такой как есть в программе.

А ты потрудись и сделай простенький примерчик "чисто для нас". :) Вот мы на нём тебя и направим в правильное русло... ;)

ViktorCore 20.12.2011 15:03

<tr><td><p><input type="checkbox"  name="FizDogovor" value="%s">
Разработка лицензионного договора для Физ. Лица</p></td> <td>$%s</td></tr>

<tr><td><p><input type="checkbox"  name="FirmDogovor" value="%s">
Разработка лицензионного договора для Предпринимателей</p></td>
<td>$%s</td></tr>

<tr><td><p><input type="checkbox"  name="Negotiations" value="%s">
Представительство в переговорном процессе</p></td>
<td>$%s </td></tr>

<tr><td><p><input type="checkbox"  name="TradeMark" value="%s">
Регистрация Торговой Марки</p></td><td>от $%s</td></tr>

Надеюсь так понятней: есть абзацы "Р" в которых заключены инпуты, абзацы находятся внутри ячеек таблицы.

Задача: по нажатию абзаца или чекбокса - копировать и удалять этот абзац вниз страницы.

Ниже ДжавСкрипт код с комментами:

// Элементы списка добавляются в онлайн договор
$('p:has(input[type="checkbox"]), p input[type="checkbox"]').toggle(
// выбираю чекбокс и абзац в котором чекбокс

function(){ $(this).children('input').attr('checked', true); 
$(this).addClass('selected'); // по нажатию на абзац чекбокс получает галочку, а абзац меняет цвет;

var serviceCopy = $(this).clone(); // клонирую выбранный абзац
serviceCopy.id = $(this).clone().children('input').attr('name') + "cloned";
// присваиваю клону идентификатор

$('#Padress').after(serviceCopy); // вставляю клона перед #Padress
alert (serviceCopy.id); // проверяю есть ли идентификатор у клона
},

// по второму нажатию на абзац, чекбокс и подсветка абзаца убираются
function(){ $(this).children('input').removeAttr('checked'); 
$(this).removeClass('selected'); 

var removeCopy = '#' + $(this).children('input').attr('name') + "cloned"; 
// заношу в переменную идентификатор объекта, который надо будет удалить
$(removeCopy).remove(); // удаля объект с указанным идентификатором
});


Результат - абзац с чекбоксом клонируется как надо, но по второму нажатию клонированный абзац не удаляется. Нужно чтоб удалялся.

Уже понятнее?

ksa 20.12.2011 15:19

Цитата:

Сообщение от ViktorCore
Надеюсь так понятней

Ты понимаешь что такое "полный, тестовый пример"? Посмотри в свежих темах - их там навалом. Они даже могут быть запущены прямо тут в теме...

Начинай прилагать собственные усилия в решении своих же проблем. ;)

ViktorCore 20.12.2011 15:28

ksa,

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

По поводу усилий - Я прилагаю. ;)

ksa 20.12.2011 15:33

Цитата:

Сообщение от ViktorCore
но как такие примеры делать - не знаю

По аналогии...

Цитата:

Сообщение от ViktorCore
Я прилагаю

Эо отрадно... :yes:


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