我有两个包含类名list_item
和list_item_menu
的div。它们都包含在另一个具有类list_item_container
的div中。点击list_item_menu
后,我可以使用以下内容显示/隐藏list_item
:
$(".list_item").click(function() {
$(this).next('.list_item_menu').toggle();
});
这在div用原始html编写时有效,但是当动态创建div时,切换不起作用。我尝试像这样创建它们:
function addListItem () {
var text = $("#new_item_field").val();
$("#list_box").children().last().after(
'<div class = "list_item_container">'+
'<div class = "list_item">'+
text+
'</div>'+
'<div class = "list_item_menu">'+
'notes | due | completed'+
'</div>'+
'</div>'
);
$("#new_item_field").val('');
}
并且像这样:
function addListItemToDoc () {
var text = $("#new_item_field").val();
var listbox = document.getElementById('list_box');
var container = document.createElement('div');
container.className = 'list_item_container';
var item = document.createElement('div');
item.className = 'list_item';
item.innerHTML = text;
var menu = document.createElement('div');
menu.className = 'list_item_menu';
menu.innerHTML = "notes | due | completed";
container.appendChild(item);
container.appendChild(menu);
listbox.appendChild(container);
$("#new_item_field").val('');
}
但两种方式似乎都不起作用。有什么想法吗?
答案 0 :(得分:0)
在这些情况下,您应该使用on():
$(document).on('click', '.list_item', function() {
// Your code here
});
答案 1 :(得分:0)
使用on而不是click to bind event
$("#list_box").on("click",".list_item", function() {
$(this).next('.list_item_menu').toggle();
});
答案 2 :(得分:0)
由于它们是动态创建的,因此您需要使用事件委派并将click事件绑定到DOM准备就绪的元素:
$(".list_item").click(function() {
可以成为:
$("#list_box").on("click", ".list_item", function() {