Показать сообщение отдельно
  #3 (permalink)  
Старый 23.09.2014, 22:34
Аватар для light
Аспирант
Отправить личное сообщение для light Посмотреть профиль Найти все сообщения от light
 
Регистрация: 11.04.2014
Сообщений: 60

bes,
Извините, просто на форум я обращаюсь в крайнем случае, предварительно перебрав все возможные варианты, насколько хватает знаний, и под конец в голове полная каша, что и приводит к таким не совсем понятным темам. Мне казалось проблема ясна)
Специально для темы, сделал демо версию проблемы)
Код:
$(function() { 	
	$(".del").click(function(){
	if (confirm('Вы уверены, что хотите удалить?')) {
		$("#l"+$(this).attr("data-id")).hide();
		} else {}
	});
	
	$("#new").click(function(){ 
			$.ajax({  
				type: "POST",  
				data: "test="+$("#col").val(),
				url: "http://"+window.location.hostname+"/include/ajax/test.php",  
				success: function(test){	
					$("#col").val(test.id);
					$(".test").append("<li id='l"+test.id+"' data-id='"+test.id+"'>"+test.id+" <input type='submit' value='del' class='del' data-id="+test.id+" id='del"+test.id+"' /></li>"); 				
				}  					
			});		
	});
	
	
});
<input type="submit" value="new" id="new" />
<ul class="test">
	<li id="l1" data-id="1">1 <input type="submit" value="del" class="del" data-id="1" id="del1" /></li>
	<li id="l2" data-id="2">2 <input type="submit" value="del" class="del" data-id="2" id="del2" /></li>
</ul>
<input type="text" value="2" id="col" />

Файл ajax/test.php прибавляет 1 и возвращает id

<?  header("Content-type:application/json;"); $id = (int)$_POST['test']+1;?>
{ "id": "<?=$id;?>" }


Проблема в том, что при таком коде, новые <li> не удаляются.
Что бы они удалялись, нужно прописать вот так:

$(function() { 	
	$(".del").click(function(){
	if (confirm('Вы уверены, что хотите удалить?')) {
		$("#l"+$(this).attr("data-id")).hide();
		} else {}
	});
	
	$("#new").click(function(){ 
			$.ajax({  
				type: "POST",  
				data: "test="+$("#col").val(),
				url: "http://"+window.location.hostname+"/include/ajax/test.php",  
				success: function(test){	
					$("#col").val(test.id);
					$(".test").append("<li id='l"+test.id+"' data-id='"+test.id+"'>"+test.id+" <input type='submit' value='del' class='del' data-id="+test.id+" id='del"+test.id+"' /></li>"); 	
					
				$(".del").click(function(){
				if (confirm('Вы уверены, что хотите удалить?')) {
					$("#l"+$(this).attr("data-id")).hide();
					} else {}
				});
								
				}  					
			});		
	});
	
	
});


Но вот тут у меня и возникает та самая проблема. Я её вижу так: каждый раз когда я добавляю новый <li> этот код так же прописывается каждый раз.
А потом соответственно и вызывается 5 раз вместо одного.
Ответить с цитированием