我正在用jQuery製作簡單的待辦事項列表,並且遇到了關於如何通過雙擊編輯li
元素的內容的問題。我寫了一個函數,但它不起作用。li元素的jQuery編輯內容
這裏是我的代碼:http://jsfiddle.net/strangeviking/1vwho2ru/3/:
function addListItem() {
var text = $('#new-text').val();
$("#todolist").append('<li><input type="checkbox" class="edit" />' + text + ' <button class="delete">Delete</button></li>');
$("#new-text").val('');
};
function deleteItem() {
$(this).parent().remove();
}
function finishItem() {
if ($(this).parent().css('textDecoration') == 'line-through') {
$(this).parent().css('textDecoration', 'none')
} else {
$(this).parent().css('textDecoration', 'line-through');
}
}
function editItem(e) {
var $input = $(e.target).closest('li').addClass('editing').find('.edit');
$input.val($input.val()).focus();
}
$(function() {
$('#new-text').keyup(function(e) {
if (e.keyCode === 13) {
addListItem();
}
});
$(document).on('click', '.delete', deleteItem);
$(document).on('click', '.edit', finishItem);
$(document).on('dblclick', '.edit', editItem);
$("#select_all").click(function() {
$('input:checkbox').not(this).prop('checked', this.checked);
if ($('li').css('textDecoration') == 'line-through') {
$('li').css('textDecoration', 'none')
} else {
$('li').css('textDecoration', 'line-through');
}
});
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<h1>List</h1>
<input type="text" id="new-text" />
<ul id="todolist"></ul>
<br>
<input type="checkbox" id="select_all" />Select all
@http://stackoverflow.com/users/3541881/%e1%94%95%e1%96%ba%e1%98%8e%e1%95%8a我怎樣才能使它的寬度限制只爲文字長度?我不想有可能刪除複選框和按鈕 –
@VasylPylypiv我不明白你。如果您像示例中那樣添加了「span」,則無法刪除複選框/按鈕 - 只能編輯文本。 –
@http://stackoverflow.com/users/3541881/%e1%94%95%e1%96%ba%e1%98%8e%e1%95%8a對不起,我把這段代碼寫錯了地點。現在所有工作都很完美你能否幫助我完成與此代碼相關的其他小任務?我需要寫fucntion將刪除所有選中的元素 –