jquery - 为什么没有主体的点击不起作用

标签 jquery jquery-plugins

我在页面上有多个 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/

相关文章:

javascript - JS 文本和摩尔斯电码转换器

c# - 在同一响应中返回多个 JSON 对象并解析它

javascript - Textext jquery 插件不适用于多个 TextArea

javascript - 使用 FullCalendar 和 SlickGrid 时如何选择文本

javascript - 如何为 jQuery 插件设置私有(private)变量?

javascript - jQuery - 复选框不更新文本

jquery - 使用 AJAX/Ruby on Rails 在部分模板中定义局部变量

jquery - 如何使用 javascript 在 html 中添加甜蜜的警报弹出消息

javascript - jQuery Carousel 插件与 WowSlider 类似且更轻

javascript - jQuery Mobile - Spinbox - 多个依赖的 Spinbox