使用(this)动态内容jQuery

时间:2015-03-04 10:22:54

标签: javascript jquery

我无法理解使用jQuery添加动态内容。我的代码会将项目添加到列表中,当您单击该列表上的项目时,该项目的内容应该是可见的。此时,当我单击某个项目时,将显示所有项目的内容。我尝试添加(这个),但这不起作用。

$(document).ready(function() {
var hidden = true;

$("#add").click(function() {
    var item = $("#name").val();
    var date = $("#date").val();

    if(item == "") {
        return false;
    }

    var prependItem =
    "<li class='new'>"+
        "<button class='btn btn-default' id='check'></button>"+
        "<span class='item'>&nbsp;"+item+"</span>"+
        "<ul class='sub'>"+
            "<li>"+
                "Due date: 5/3/2015"+
            "</li>"+
        "</ul>"+
    "</li>";

    $(".todo").prepend(prependItem);
    $(".sub").hide();
    $(".form")[0].reset();

    return false;
});

// show sub content
$(".todo").on("click", ".item", function() {
    if(hidden == true) {
        $(".sub").show();
        hidden = false;
    }
    else {
        $(".sub").hide();
        hidden = true;
    }
});

$(".todo").on("click", "#check", function() {
    // line through
})                                      
});

3 个答案:

答案 0 :(得分:3)

.sub元素是.item的兄弟元素,因此使用this来获取引发事件的元素的引用时,您需要使用{{1} }}。您还可以使用siblings('.sub')来简化代码。试试这个:

toggle()

答案 1 :(得分:1)

sub是点击的item的下一个兄弟,因此您可以this.next()一起使用

// show sub content
$(".todo").on("click", ".item", function() {
    $(this).next().toggle();
});

而不是使用变量来存储隐藏状态使用.toggle()

答案 2 :(得分:0)

使用此

$(".todo").on("click", ".item", function() {
    $(this).children(".sub").toggle();
});