Javascript-форум (https://javascript.ru/forum/)
-   Общие вопросы Javascript (https://javascript.ru/forum/misc/)
-   -   Создание следующего Div'а (https://javascript.ru/forum/misc/31763-sozdanie-sleduyushhego-div%27.html)

OklickSpb 20.09.2012 01:16

Создание следующего Div'а
 
Есть такая страница:
<div id="test_[B]1[/B]">
<input type="text" name="address_1" id="address_1" value="" placeholder="Адрес" size="25" class="NewAdvertAddress" />

<input type="text" name="schedule_1" id="schedule_1" value="" size="15" onclick='schedule(1, "false")' placeholder="Выберите график" class="NewAdvertSchedule" />

<textarea name="comment_1" id="comment_1" placeholder="Комментарии" cols="70" rows="2" class="NewAdvertComment"></textarea>
</div>


Необходимо получить все элементы этого дива и клонировать
так, что бы полчилось:
<div id="test_[B]2[/B]">
<input type="text" name="address_2" id="address_2" value="" placeholder="Адрес" size="25" class="NewAdvertAddress" />

<input type="text" name="schedule_2" id="schedule_2" value="" size="15" onclick='schedule(2, "false")' placeholder="Выберите график" class="NewAdvertSchedule" />

<textarea name="comment_2" id="comment_2" placeholder="Комментарии" cols="70" rows="2" class="NewAdvertComment"></textarea>
</div>

Пробовал функцией .children();
Но не знаю, как среди всех забранных элементов выцепить один...

ksa 20.09.2012 08:58

Цитата:

Сообщение от OklickSpb
Пробовал функцией .children();
Но не знаю, как среди всех забранных элементов выцепить один...

Как вариант...
http://jquery-docs.ru/Core/eq/#position

ksa 20.09.2012 08:59

Цитата:

Сообщение от OklickSpb
Необходимо получить все элементы этого дива и клонировать
так, что бы полчилось:

Больше похоже на создание нового эелемента, чем на именно клонирование. :)

OklickSpb 20.09.2012 13:20

С этим разоюрался,
делаю так:
$("#AddressInformation_0").children().map( function() {
var clon = $("#"+this.id).clone();
var nameExplode = this.name.split('_');
var nextName = +nameExplode[1]+1;
clon.attr('name', nameExplode[0]+'_'+nextName).attr('id', nameExplode[0]+'_'+nextName).appendTo('#AddressInformation_1');});

Но вот появляется следующий вопрос, как мне отредактировать событие OnClick?
При вызове this.onclick, JQuery возвращает не ожидаемую строку:
schedule(0, "false"), которую можно сплитом поделит и отредактировать, а вот такое:
function anonymous(event) {
schedule(0, "false")
}

И это .split(','), не поддается, что делать?
Пожалуйста помогите...

ksa 20.09.2012 13:30

Цитата:

Сообщение от OklickSpb
как мне отредактировать событие OnClick?

Его не обязательно редактировать... Можно написать некий, более универсальный обработчик.

Например ту циферку хранить в некоем параметре элемента... Пусть скрипт берет нужное значение из него...

OklickSpb 20.09.2012 13:34

А вы не могли бы пример написать? Хотя бы как это делать?

ksa 20.09.2012 13:40

Цитата:

Сообщение от OklickSpb
А вы не могли бы пример написать?

Я все жду тестовых примеров от тебя... :D
А пока только огрызки на которых и показать-то ничего не покажешь...

OklickSpb 20.09.2012 13:50

Воть:)
<div id="AddressInformation_0" class="AddressInformation">
<input type="text" name="address_0" id="address_0" value="" placeholder="Адрес" size="25" class="NewAdvertAddress" />

<input type="text" name="schedule_0" id="schedule_0" value="" size="15" onclick='schedule(0, "false")' placeholder="Выберите график" class="NewAdvertSchedule" />

<textarea name="comment_0" id="comment_0" placeholder="Комментарии" cols="70" rows="2" class="NewAdvertComment"></textarea>
<p>
<button name="addAddress_0" id="addAddress_0" type="button" class="NewAdvertAddAddress" onclick='PriceAddAddress("add, 0")'>Добавить адрес</button></p>
</div>


JQuery:
function PriceAddAddress(type ,number)
    {
        if(type == 'add')
        {
var NextNumber = number + 1;
//Создаем новый ДИВ с заранее высчитанным NextNumber
            $('#AddressInformation_'+number).after('<div id="AddressInformation_'+nextNumber+'" class="AddressInformation"></div>');
//передаем название ДИВА, который необходимо клонировать с 
//измененными id и name
PriceAddNewInput('#AddressInformation_'+nextNumber);
}
 else
        {
            $('#AddressInformation_'+number).remove();
        }
}


function PriceAddNewInput(div)
    {
//перебираем все дочерние элементы и перебирая изменяем ID и Name
        $(div).children().map( function() {
            var clon = $("#"+this.id).clone();
            var nameExplode = this.name.split('_');
            var nextName = +nameExplode[1]+1;
            //Вставляем в ДИВ, сощданный нами ранее
            clon.attr('name', nameExplode[0]+'_'+nextName).attr('id', nameExplode[0]+'_'+nextName).appendTo('#AddressInformation_'+nextName);
        });
    }

ksa 20.09.2012 20:54

Опять огрызки... :D

OklickSpb 20.09.2012 22:03

Отредактировал, что еще надо то? :)


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