单击元素时,我无法触发事件,只有当您将鼠标悬停在td元素上时才会显示此元素。
//Hovering over a td element displayed a Span
$('td').hover(
function() {$(this).append('<span class="editCell">hello</span>')},
function() {$(this).find('span:last').remove()}
)
//Clicking on that span, it's supposed to trigger alert. But it doesn't.
$('.editCell').click( function(){
alert('hello');
})
答案 0 :(得分:2)
因为.click()
事件不适用于动态添加的内容。
使用.on()代替
$("td").on("click", ".editCell" ,function(){
});
td
中的所有元素,并仅将click
事件绑定到该选择器。以上称为delegated-events
。
你也可以这样做:
$(".editCell").on("click",function(){
});
答案 1 :(得分:0)
这是因为页面加载后会附加editCell
元素。您需要将事件委托给最近的静态元素。试试这个:
$("td").on("click", ".editCell", function() {
alert("hello");
});
虽然td
选择器仍然有点广泛,但为了提高性能,您应该在最近的父editCell
上添加一个id。