Новый трабл. Были проблемы с реагированием вновь добавленных на страницу элементов на события. После подключения к новым элементам обработчиков через on стало лучше... но всё же...
удаление элементов работает без претензий, в то время как перемещение значений после добавления новых элементов работает только для них, а для старых элементов пропадает...
Вот код:
<head>
<script src="http://code.jquery.com/jquery-latest.js"></script>
<script>
$(document).ready(function() {
$('.up').click(function(){
var curVal = $(this).next('input').val(),
curAttr = parseInt($(this).next('input').attr('id')),
prevAttr = curAttr - 1,
prevElem = $('#'+prevAttr),
prevVal = $(prevElem).val();
$(this).next('input').val(prevVal);
$(prevElem).val(curVal);
});
$('.delete').click(function(){
var deletedBlock = $(this).parent();
deletedBlock.remove();
});
$('#add_block').click(function(){
var newId = parseInt($('#input_blocks input:last').attr('id'))+1;
$(this).before("<span class='str_block'><span class='up' onClick='blockUp()'><img src='../city/css/img/arrow_up.png' height='15' /></span><input type='text' id='"+newId+"' value='' placeholder='Введите название' /><span class='delete'>Удалить</span><br /></span>");
$('.delete').on('click', function(){
$(this).parent().remove();
});
$('.up').on('click', function(){
var curVal = $(this).next('input').val(),
curAttr = parseInt($(this).next('input').attr('id')),
prevAttr = curAttr - 1,
prevElem = $('#'+prevAttr),
prevVal = $(prevElem).val();
$(this).next('input').val(prevVal);
$(prevElem).val(curVal);
});
});
});
</script>
<style>
.up, .delete, #add_block{
color: #03C;
}
.up:hover, .delete:hover, #add_block:hover{
cursor:pointer;
color: #CCC;
}
</style>
</head>
<body>
<div id='input_blocks'>
<span class='str_block'>
<input type='text' id='1' value='Гостиницы' />
<span class='delete''>Удалить</span><br /></span> <!--при нажатии, родитель (str_block)
удаляется-->
<span class='str_block'><span class='up'> <!--при нажатии, значение следующего input
присваивается полю выше-->
<img src='../city/css/img/arrow_up.png' height='15' />
</span>
<input type='text' id='2' value='Рестораны' />
<span class='delete''>Удалить</span><br /></span>
<span id='add_block'>Добавить блок</span> <!--при нажатии добавляется новый
str_block с содержимым-->
</div>
</body>