我无法理解使用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'> "+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
})
});
答案 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();
});