案例:TodoList待办事项的实现

// An highlighted block
$(function() {
    load();
    $('#title').keydown(function(e) {
        if (e.keyCode == 13) {
            if ($('#title').val().trim() == '') {
                alert('未输入待办事项');
                return;
            }
            var preData = getData();
            preData.push({ title: $('#title').val(), done: false });
            localStorage.setItem('todolist', JSON.stringify(preData));
            $('#title').val('');
            load();
        }
    })
    $('ul,ol').on('click', '.del', function() {
        var preData = getData();
        preData.splice($(this).attr('index'), 1);
        localStorage.setItem('todolist', JSON.stringify(preData));
        load();
    })
    $('ul,ol').on('click', '.fresh', function() {
        var fresh = prompt('输入修改的内容');
        if (!fresh) return;
        var preData = getData();
        preData[$(this).attr('index')] = { title: fresh, done: $(this).siblings('input').prop('checked') };
        localStorage.setItem('todolist', JSON.stringify(preData));
        load();
    })
    $('ul,ol').on('click', 'input', function() {
        var preData = getData();
        preData[$(this).siblings('a').attr('index')].done = $(this).prop('checked');
        localStorage.setItem('todolist', JSON.stringify(preData));
        load();
    })

    function load() {
        var preData = getData();
        $('ul,ol').empty();
        $.each(preData, function(index, domEle) {
            var li = $('<li></li>');
            li.html('<input type="checkbox">' + domEle.title + '<a class="fresh" href="javascript:;" index=' + index + '></a>' + '<a class="del" href="javascript:;" index=' + index + '></a>');
            li.children('input').prop('checked', domEle.done);
            domEle.done ? $('ul').prepend(li) : $('ol').prepend(li);
        })
        $('#todocount').text($('ol li').length);
        $('#donecount').text($('ul li').length);
    }

    function getData() {
        if (localStorage.getItem('todolist') != null) {
            return JSON.parse(localStorage.getItem('todolist'));
        } else return [];
    }
})

上面实现了类似一个备忘录的小功能。
核心原理是利用本体存储一个数组todolist,这个数组的成员存储的是对象,包括title和down两个属性值。
在键盘事件keydown和input的change事件触发以后,会改变数组todolist的值,此时通过load会重新渲染。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值