Aut*_*cus 1 jquery jquery-plugins
我在页面上有多个myclass类,并且我使用ajax添加了更多的类
如果我这样做
$('.myclass').click(function(){
alert(1);
});
Run Code Online (Sandbox Code Playgroud)
它适用于所有非ajax附加请求,但不适用于由ajax附加的类.对于那些工作
$(body).on('click','myclass',function(){
alert(1);
});
Run Code Online (Sandbox Code Playgroud)
我的问题,为什么?
可以简要解释一下
当您使用普通事件注册模型时,它会直接将处理程序注册到目标,这些处理程序在处理程序注册执行时存在于dom中.因此,动态添加的元素将不会获得这些处理程序.
对此的解决方案是使用事件委托,在此模型中,处理程序注册到祖先元素,当页面加载了选择器以过滤掉源元素时,该元素将出现.这利用了事件传播 - 元素中发生的事件传播到所有祖先元素(像焦点事件这样的例外).因此,元素中发生的事件会传播到其中一个元素中的祖先元素,然后处理器被注册,然后事件源元素(event.target)及其祖先与作为第二个参数传递的选择器匹配,如果满足则处理程序已执行. http://api.jquery.com/on/#direct-and-delegated-events
| 归档时间: |
|
| 查看次数: |
87 次 |
| 最近记录: |