0

准备好文档后,我有一个 onclick 函数,它使用 class=project 更改某些元素的 css。如果由于另一个事件使用 .remove() 删除了那些带有 class=project 的元素,那么由于另一个事件使用 .append() 和 class=project 追加新元素,我的 onclick 事件不应该改变 CSS 仍然有效,因为新元素有 class=project?

它看起来不像,但有没有办法解决这个问题?

4

3 回答 3

2

不,您需要再次使用事件处理程序委托或绑定新元素,因为它们在绑定时不存在。

$('.project').on('click',function(){...}) // <-- elements must exist at time of binding

$('body').on('click','.project',function(){...}) // <-- event handler is attached to an ancestor element - which is body in this example
// the ancestor element will now listen to events from elements with class=project and handle the events as they bubble up
于 2013-01-04T18:59:26.177 回答
1

尝试使用.detach而不是.remove. 但是,听起来您想使用委托。至少:

$(document).on('click', '.project', function () {

而不是使用document,您应该尝试使用更具体的选择器,例如.project元素容器的父级。

于 2013-01-04T18:59:03.340 回答
0

我了解了 jQuery 的 .delegate,它确实想要我想要的。我可以删除并附加我想要的所有内容。我希望这对其他人有所帮助。

于 2013-01-05T06:58:39.970 回答