要列出jquery,请删除项目

时间:2013-12-12 23:03:38

标签: javascript jquery

我正在使用jquery创建一个非常简单的待办事项列表。我有一个用于添加内容的输入框,一旦输入它将打印出下面的内容:

HTML:       

    <html>
          <head>
             <title>My to-do list</title>
             <link rel="stylesheet" href="css/list.css" >
         </head>

        <body>
<script src="http://code.jquery.com/jquery-1.10.1.min.js"></script>
<script src="js/list.js"></script>
  <div id="empty-top"></div>
  <div align= "center" class="wrapper">
    <h2>Add thing to your to-do list</h2>
    <input id='input' type="text" placeholder="To-do-list" >
  </div>

  <div class = "things">

  </div>

        </body>
   </html>

我的js文件:

$(function(){

  $("#input").keypress(function(e){

if(e.which == 13){

  var content = $("#input").val();

  $("<li>" + content + "<input id= 'check' type='checkbox'> </li>").appendTo(".things");

  };

});

//我想检查是否选中了该框。如果是,那么我想插入 标签来跨越该项目。但是这个功能不起作用。我也试过(“输入”)。是(“:checked”)或(“输入”).prop(“checked”,true)但仍然没有做我想要的。

$("#check").click(function(){

  var box = $(this);

  $("<del>").insertBefore("<li>");

  $("</del>").insertAfter("</li>");

});

});

谢谢!!!!!!!!

2 个答案:

答案 0 :(得分:1)

首先,你不能将LI元素附加到DIV,它应该是UL或OL父元素,并且你不能将DEL包装在DEL中,因为DEL元素不能是一个子元素UL,因此您必须包装内部元素,并在再次取消选中该复选框时将其解包。

对于事件处理程序,您可以在创建元素时附加它,并且您应该监听更改事件等。

$(function () {
    $("#input").keypress(function (e) {
        if (e.which == 13) {
            var content = $("#input").val();
            var li  = $('<li />', {
                    text : this.value
                }),
                inp = $('<input />', {
                    'class': 'check',
                    type   : 'checkbox',
                    on : {
                        change: function() {
                            if (this.checked) {
                                $(this).closest('li').wrapInner('<del />');
                            }else{
                                $(this).unwrap();
                            }
                        }
                    }
                });
            $('.things').append( li.append(inp) );
        };
    });
});

FIDDLE

答案 1 :(得分:0)

要查看您的复选框是否已选中,您可以使用:

$("input").get(0).checked

我建议在CSS中添加一个类:

.complete{text-decoration:line-through}

然后添加complete类,如果checked

if($("input").get(0).checked){
   $('corresponding-list-item').addClass('complete');
}