Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #1 (permalink)  
Старый 18.11.2016, 16:33
Аспирант
Отправить личное сообщение для EvgenStor Посмотреть профиль Найти все сообщения от EvgenStor
 
Регистрация: 18.11.2013
Сообщений: 31

Удаление добавление HTML кода
Смастерил вот такую конструкцию, но цикл не работает до конца (вторая часть скрипта), подскажите почему?
Должно работать все по кругу, появляться и исчезать при нажатии на кнопку.

<div class="add-cut">
<button class="add">Добавить</button>
</div>
<ul class="l1">
   <li class="it1">Название</li>    
   <li class="it2">Цена</li>    
 </ul>

$('.add').bind('click', function() {
  $('<ul class="l2"><li class="it1">Название</li><li class="item it2">Цена</li></ul>').insertAfter($('.l1'));
  $(".add-cut").empty();
  $('<button class="cut">Удалить</button>').prependTo($('.add-cut'));
});
 
$('.cut').bind('click', function() {
    $(".add-cut").empty();
  $('<button class="add">Добавить</button>').prependTo($('.add-cut'));
});
Ответить с цитированием
  #2 (permalink)  
Старый 18.11.2016, 16:49
Профессор
Отправить личное сообщение для Rise Посмотреть профиль Найти все сообщения от Rise
 
Регистрация: 07.11.2013
Сообщений: 4,662

Сообщение от EvgenStor Посмотреть сообщение
но цикл не работает до конца
не может работать то чего нет, повторные телодвижения не являются циклом
Ответить с цитированием
  #3 (permalink)  
Старый 18.11.2016, 17:03
Аватар для dd_smol
Кандидат Javascript-наук
Отправить личное сообщение для dd_smol Посмотреть профиль Найти все сообщения от dd_smol
 
Регистрация: 08.03.2015
Сообщений: 131

Все же очевидно вы пытаетесь повесить обработчик на те элементы которые еще не созданы.

$('.add-cut').on('click', '.add, .cut', function ( e ) {
	if ( $( e.target ).hasClass('add') ) {
		$('.li').after('<ul class="l2"><li class="it1">Название</li><li class="item it2">Цена</li></ul>');
		$('.add-cut').html('<button class="cut">Удалить</button>');
	} else {
		$('.add-cut').html('<button class="add">Добавить</button>');
	}
});


Или так.

$('.add-cut').on('click', '.add, .cut', function ( e ) {
	var targetClass = e.target.className;

	$( e.target )
		.addClass( targetClass == 'add' ? 'cut' : 'add' )
		.text( targetClass == 'add' ? 'Удалить' : 'Добавить' )
		.removeClass( targetClass )
		.hasClass('add') &&
			$('.li').after('<ul class="l2"><li class="it1">Название</li><li class="item it2">Цена</li></ul>');
});

Последний раз редактировалось dd_smol, 18.11.2016 в 17:36.
Ответить с цитированием
  #4 (permalink)  
Старый 18.11.2016, 18:48
Аспирант
Отправить личное сообщение для EvgenStor Посмотреть профиль Найти все сообщения от EvgenStor
 
Регистрация: 18.11.2013
Сообщений: 31

Rise, сходи в школу поучись "повторные телодвижения" это и есть цикл.

dd_smol,
К сожалению мне это не очевидно, я только поверхностно знаю Jquery, и я не могу дискутировать на эту тему. Но почему вы говорите
Цитата:
вы пытаетесь повесить обработчик на те элементы которые еще не созданы
На какой не созданный элемент я по вашему ссылаюсь?

Все что мне нужно, это что бы при нажатии на кнопку "удалить" HTML был в первоначальном состоянии, до нажатия на кнопку "Добавить". А далее я мог повторно использовать этот цикл сколько угодно раз, как сказал Rise "повторными телодвижениями".

Ваши предложенные варианты не работают так как мне надо.

Весь смысл в том что бы была возможность бесконечно добавлять и удалять (если не нужен) список <ul class="l2">

http://codepen.io/EvgenStor/pen/JbEjMP
Ответить с цитированием
  #5 (permalink)  
Старый 18.11.2016, 19:31
Профессор
Отправить личное сообщение для Rise Посмотреть профиль Найти все сообщения от Rise
 
Регистрация: 07.11.2013
Сообщений: 4,662

Сообщение от EvgenStor Посмотреть сообщение
но цикл не работает до конца
Сообщение от EvgenStor Посмотреть сообщение
"повторные телодвижения" это и есть цикл
"повторные телодвижения" не работает до конца - сходи в больницу полечись)))
Ответить с цитированием
  #6 (permalink)  
Старый 18.11.2016, 20:46
Аспирант
Отправить личное сообщение для EvgenStor Посмотреть профиль Найти все сообщения от EvgenStor
 
Регистрация: 18.11.2013
Сообщений: 31

Rise, воспользуйся своим советом сам, желчь проверь, явно избыток! Лучше по делу чего нибудь сказал, чем отрыжки свои извергать!

Кому интересно решение было найдено
$('.add-cut').on('click', '.add', function() {
  $(".add-cut").empty();
  $('<ul class="l2"><li class="it1">Название</li><li class="item it2">Цена</li></ul>').insertAfter($('.l1'));
  $('<button class="cut">Удалить</button>').prependTo($('.add-cut'));
});

$('.add-cut').on('click', '.cut', function() {
  $(".add-cut").empty();
  $('<button class="add">Добавить</button>').prependTo($('.add-cut'));
  $(".l2").empty();
});
Ответить с цитированием
  #7 (permalink)  
Старый 18.11.2016, 21:19
Профессор
Отправить личное сообщение для Rise Посмотреть профиль Найти все сообщения от Rise
 
Регистрация: 07.11.2013
Сообщений: 4,662

EvgenStor, так пиши по делу...
Ответить с цитированием
Ответ



Опции темы Искать в теме
Искать в теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Вывод кусков HTML кода с одного файла JS wlad2 Общие вопросы Javascript 16 04.01.2011 11:52
Добавление методов к стандартным объектам и совместимость кода Василий Б. Общие вопросы Javascript 10 20.07.2010 12:00
Добавление html через $(this).text() basist jQuery 1 26.09.2009 11:57
Добавление и удаление полей в форму anoth3r Events/DOM/Window 1 11.09.2009 15:10
Готовность HTML кода no_alex Общие вопросы Javascript 15 25.11.2008 16:52