我在页面上有多个 myclass 类,并且我使用 ajax 添加了更多类
如果我这样做
$('.myclass').click(function(){
alert(1);
});
它适用于所有非 ajax 附加请求,但不适用于由 ajax 附加的类。 对于那些有效的人
$(body).on('click','myclass',function(){
alert(1);
});
我的问题,这是为什么?
最佳答案
简单说明即可
当您使用普通的事件注册模型时,它将直接将处理程序注册到处理程序注册执行时存在于 dom 中的目标。因此稍后动态添加的元素将不会获得这些处理程序。
解决这个问题的方法是使用事件委托(delegate),在这个模型中,处理程序被注册到一个祖先元素,当页面加载选择器以过滤掉源元素时,该祖先元素将出现。这利用了事件传播 - 元素中发生的事件会传播到所有祖先元素(很少有异常(exception),例如焦点事件)。因此,元素中发生的事件会传播到其中一个处理程序注册的祖先元素,然后事件源元素(event.target)及其祖先与作为第二个参数传递的选择器进行匹配,如果满足则处理程序被执行。 http://api.jquery.com/on/#direct-and-delegated-events
关于jquery - 为什么没有主体的点击不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18708874/