У меня есть простая вещь. Когда пользователь нажимает на ссылку edit
, он превращает предыдущий элемент в элемент input
для редактирования, а edit
- в cancel
. Если пользователь решает не редактировать, он может нажать на cancel
, и все должно вернуться в исходное состояние.jQuery .html() не устанавливает html вообще
Сейчас это не работает вообще:
$('.cancel').on('click', function() {
$(this).parent().html("<a href='#'>edit</a>");
});
HTML:
<div class='photo-section'>
<div class='photo-head'>
<div class='photo-info'>
Photo Name : <span class='photo-name'>Work selfie</span>
<span class='title-edit'><a href='#'>edit</a></span>
</div>
</div>
<div class='photo'>
<img src='' alt='' title=''>
</div>
<div class='tag-section'>
<div class='tags'>Photo Tags:
<span>#code#coffee#late#night</span>
<span class="tags-edit"><a href="#" class="">edit</a></span>
</div>
</div>
</div>
CSS:
// JavaScript to handle photo operations
$(document).ready(function() {
// show/hide edit option
$('.photo-info, .tags').hover(function() {
$(this).find('.title-edit > a, .tags-edit > a').addClass('visible');
}, function() {
$(this).find('.title-edit > a, .tags-edit > a').removeClass('visible');
});
// show editable area
$('.title-edit, .tags-edit').on('click', function() {
edit(this);
});
});
function edit(elem) {
// change element into an input elemnt for editing
var $item = $(elem).prev();
var text = $item.text();
$item.html("<input type='text'>").find('input').attr('value', text);
// change edit to cancel if input element present
if ($('input').length) {
$item.next().html("<a href='#' class='cancel'>cancel</a>");
}
// change cancel back to edit
if ($('.cancel').length) {
$('.cancel').on('click', function() {
$(this).parent().html("<a href='#'>edit</a>");
});
}
}
Результат: https://jsfiddle.net/hgwkxygz/6/ Любая помощь будет здорово!
Поскольку ваш вопрос не о PHP, вы должны заменить PHP-код на его вывод HTML. – Jocelyn
Он работает, но предыдущий обработчик звонков запускается сразу после него и возвращается к ссылке отмены. – JJJ
В демо вы ищете 'prev()' элемента, у которого нет предыдущего брата. На самом деле неясно, что должен делать этот код. Используйте raw html для устранения неполадок на стороне клиента ... не php. Нам не нужно разбирать код сервера для вас – charlietfl