我的问题是(因为我解决了它,但我不知道它为什么会起作用):
我的'span'
内有两个DOM
个标记,但CSS
类相同。
通过AJAX请求添加了一个跨度。
我试图使用以下方法触发点击事件:
$('.css class').on('click', function ...
但是第二次添加的'span'
标记(AJAX)没有产生点击事件。
当我将上面的行更改为:
jQuery('body').on('click', '.css class', function(e){...
一切都开始发挥作用了。
我不知道为什么。
答案 0 :(得分:1)
使用事件委托:
$('body').on('click','.css-class',function(){
// your code goes here.
});
请记住,课堂上不要有空格。否则,您将定位<class>
.css
事件处理程序仅绑定到当前选定的元素;他们 在您的代码调用.on()时页面上必须存在。 要确保元素存在且可以选择,请执行事件 绑定在文档就绪处理程序中的元素 页面上的HTML标记。如果将新HTML注入页面, 选择元素并在新HTML之后附加事件处理程序 放入页面。或者,使用委派事件来附加事件 处理程序,如下所述。
委派事件的优势在于它们可以处理来自的事件 稍后添加到文档中的后代元素。通过 选择一个保证在当时存在的元素 委托事件处理程序附加,您可以使用委托事件 避免频繁附加和删除事件处理程序....