Javascript-форум (https://javascript.ru/forum/)
-   Элементы интерфейса (https://javascript.ru/forum/dom-window/)
-   -   Генерация и удаление (https://javascript.ru/forum/dom-window/43011-generaciya-i-udalenie.html)

EleGant 18.11.2013 15:41

Генерация и удаление
 
Подскажите, вот есть код..
<div id="variants">

                  <div class="control-group" id="uzz">
                    <label class="control-label">Username</label>
                    <div class="controls">
                      <input type="text" placeholder="Username" name="name[]"> <a class="del_variant">X</a>
</div>
                  </div>                  
               	
<script src="http://code.jquery.com/jquery-latest.js"></script>
                  <script>
	$(document).ready(function(){

	var variant = $('#uzz').clone(true);
	

	$('#ss').click(function() {
	
			$(variant).clone(true).appendTo('#variants').fadeIn('slow').find("input[name*=name]").focus();		
	});
	
	$('a.del_variant').click(function() {

			$("#uzz").remove(); });
	});


				  </script>
       
                </div><span id="ss">Добавить вариант</span>


При нажатии на ДОБАВИТЬ ВАРИАНТ,..все, оке..добавляется, но вот при тыки на Х работает только первый вариант...Как сделать что бы при нажатии на против каждого работало именно для него?

ksa 18.11.2013 15:58

Цитата:

Сообщение от EleGant
Как сделать что бы при нажатии на против каждого работало именно для него?

Используй ссылку на "кликнутый" элемент - this...

рони 18.11.2013 16:00

EleGant,
22 строка начало
$(document).on('click',
далее по документации и думайте что удалять

EleGant 18.11.2013 22:48

Цитата:

Сообщение от ksa (Сообщение 281657)
Используй ссылку на "кликнутый" элемент - this...

$(this).remove(); });


Сделал, так, стал удаляться только X в первом инпуте.

рони 18.11.2013 23:14

EleGant,
:cray: :cray:
<!DOCTYPE HTML>
<html>

<head>
    <title>Untitled</title>
    <meta charset="utf-8">
    <style type="text/css">
    #ss, .del_variant{
      cursor: pointer;
    }

    </style>
    <script src="http://code.jquery.com/jquery-latest.js"></script>
    <script>
    $(document)
        .ready(function () {
            var variant = $('#uzz')
                .clone(true);
            $('#ss')
                .click(function () {
                    $(variant)
                        .clone(true)
                        .appendTo('#variants')
                        .fadeIn('slow')
                        .find("input[name*=name]")
                        .focus();
                });
            $(document)
                .on('click', 'a.del_variant', function () {
                    $(this)
                        .parents(".control-group")
                        .remove();
                });
        });
    </script>
</head>

<body>
    <div id="variants">
        <div class="control-group" id="uzz">
            <label class="control-label">Username</label>
            <div class="controls">
                <input type="text" placeholder="Username" name="name[]"> <a class="del_variant">X</a>
            </div>
        </div>
    </div><span id="ss">Добавить вариант</span>
</body>

</html>

EleGant 19.11.2013 08:01

Спасибо!!)

ksa 19.11.2013 08:56

Цитата:

Сообщение от EleGant
Сделал, так, стал удаляться только X в первом инпуте.

А на "дальше" уже соображалки не хватило? :)

KEMPZOR 09.03.2017 18:00

Цитата:

Сообщение от рони (Сообщение 281727)
EleGant,
:cray: :cray:
<!DOCTYPE HTML>
<html>

<head>
    <title>Untitled</title>
    <meta charset="utf-8">
    <style type="text/css">
    #ss, .del_variant{
      cursor: pointer;
    }

    </style>
    <script src="http://code.jquery.com/jquery-latest.js"></script>
    <script>
    $(document)
        .ready(function () {
            var variant = $('#uzz')
                .clone(true);
            $('#ss')
                .click(function () {
                    $(variant)
                        .clone(true)
                        .appendTo('#variants')
                        .fadeIn('slow')
                        .find("input[name*=name]")
                        .focus();
                });
            $(document)
                .on('click', 'a.del_variant', function () {
                    $(this)
                        .parents(".control-group")
                        .remove();
                });
        });
    </script>
</head>

<body>
    <div id="variants">
        <div class="control-group" id="uzz">
            <label class="control-label">Username</label>
            <div class="controls">
                <input type="text" placeholder="Username" name="name[]"> <a class="del_variant">X</a>
            </div>
        </div>
    </div><span id="ss">Добавить вариант</span>
</body>

</html>

Подниму вопросик, а как сделать кнопку закрыть только для второго и последующих, первый не должен закрываться ?

Diphenyl Oxalate 09.03.2017 18:17

KEMPZOR, в 29-ой строчке поменять

'a.del_variant'

на
'a.del_variant:not(:first)'

рони 09.03.2017 18:58

Diphenyl Oxalate,
а как решить не меняя ничего в скрипте?


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