Javascript 为什么要具体说明;文件「;或;正文“;在绑定jQuery事件侦听器之前?

Javascript 为什么要具体说明;文件「;或;正文“;在绑定jQuery事件侦听器之前?,javascript,jquery,events,event-delegation,Javascript,Jquery,Events,Event Delegation,在jQuery中,有许多方法可以将动作绑定到事件,并为它们添加侦听器。有了这个,我没有问题 但我不明白的是,在听一个事件之前,为这个问题指定“body”或“document”的目的是什么 考虑以下代码: $(“.example按钮”)。单击(函数(){ $(此).text(“我已被点击”); }); 我还没有被点击。 我还没有被点击。 为什么要使用委托事件侦听器 1) 内容还不存在 /#容器为空,但我们将在将来创建子容器 //我们现在可以使用delagate来处理孩子们的事件 //后来创建

在jQuery中,有许多方法可以将动作绑定到事件,并为它们添加侦听器。有了这个,我没有问题

但我不明白的是,在听一个事件之前,为这个问题指定“body”或“document”的目的是什么

考虑以下代码:

$(“.example按钮”)。单击(函数(){
$(此).text(“我已被点击”);
});

我还没有被点击。
我还没有被点击。
为什么要使用委托事件侦听器

1) 内容还不存在
/#容器为空,但我们将在将来创建子容器
//我们现在可以使用delagate来处理孩子们的事件
//后来创建的
$(“#容器”).on('click','action',函数(e){
console.log(e.target.innerText);
});
//让我们创建绑定之前不存在的新操作
$(“#container”).append('嘿!你抓住我了!')

为什么要使用委托事件侦听器

1) 内容还不存在
/#容器为空,但我们将在将来创建子容器
//我们现在可以使用delagate来处理孩子们的事件
//后来创建的
$(“#容器”).on('click','action',函数(e){
console.log(e.target.innerText);
});
//让我们创建绑定之前不存在的新操作
$(“#container”).append('嘿!你抓住我了!')


因为后者是委托处理程序。前者仅适用于创建事件处理程序时DOM中存在的
.example button
元素。后者将处理
.example button
元素,这些元素在页面生命周期的任何时候添加到DOM中(包括通过AJAX请求等添加的元素)。如果您想了解更多信息,请阅读()上的文档,特别是“直接和委派事件处理程序”部分。非委派事件绑定适用于您知道将存在的静态内容,而不是动态内容。有鉴于此,使用委托事件绑定并没有太大的理由。可能重复的
使用前者(有意)而不是后者的目的是什么?
如果您知道DOM永远不会改变(或者至少您所针对的元素永远不会改变)然后可以使用静态处理程序。委托处理程序仅在需要时使用,因为它们要求事件在主选择器上捕获DOM(
body
,在上面的示例中)。当中间元素中使用
stopPropagation()
之类的东西时,这可能会有问题,因为后者是一个委托处理程序。前者仅适用于创建事件处理程序时DOM中存在的
.example button
元素。后者将处理
.example button
元素,这些元素在页面生命周期的任何时候添加到DOM中(包括通过AJAX请求等添加的元素)。如果您想了解更多信息,请阅读()上的文档,特别是“直接和委派事件处理程序”部分。非委派事件绑定适用于您知道将存在的静态内容,而不是动态内容。有鉴于此,使用委托事件绑定并没有太大的理由。可能重复的
使用前者(有意)而不是后者的目的是什么?
如果您知道DOM永远不会改变(或者至少您所针对的元素永远不会改变)然后可以使用静态处理程序。委托处理程序仅在需要时使用,因为它们要求事件在主选择器上捕获DOM(
body
,在上面的示例中)。当中间元素中使用
stopPropagation()
之类的东西时,这可能会有问题。