Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/401.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 限制范围是否更好?_Javascript_Jquery - Fatal编程技术网

Javascript 限制范围是否更好?

Javascript 限制范围是否更好?,javascript,jquery,Javascript,Jquery,这是本节的目标,因此范围有限 $('#section').on('click','.target',function(){~}) 这是在dom中,所以它的范围很广 哪个更快? 我认为后者很快,因为前者从dom中搜索部分,然后搜索目标。 但后者只从dom中搜索目标 这个想法错了吗 限制范围是否更好 总之,是的 您发布的两个示例之间存在一些差异 $('.target').click(function(){~}) 这将针对#section注册一个处理程序,该处理程序将在单击时被激发,但只有在实际单

这是本节的目标,因此范围有限

$('#section').on('click','.target',function(){~})
这是在dom中,所以它的范围很广

哪个更快? 我认为后者很快,因为前者从dom中搜索部分,然后搜索目标。 但后者只从dom中搜索目标

这个想法错了吗

限制范围是否更好

总之,是的

您发布的两个示例之间存在一些差异

$('.target').click(function(){~})
这将针对
#section
注册一个处理程序,该处理程序将在单击时被激发,但只有在实际单击了
.target
的情况下,才会调用处理程序

$('#section').on('click','.target',function(){~})
这相当于

$('.target').click(function(){~})
将仅为在处理程序在页面中任何位置注册时位于DOM中的
.target
注册

从性能角度来看,您应该将作用域限制为注册处理程序时页面上的元素。如果它在您的特定场景中有意义


如果要动态创建
.target
元素,只需使用第一个表单。我更愿意说,差异非常小,我们可以忽略它。第一个表单不搜索
.target
。它将事件处理程序绑定到
#section
,然后当您单击它时,将测试您是否使用
class=“target”
单击某个元素。但这意味着当您单击
#section
中的任意位置时,代码必须运行才能执行此测试。第二个将处理程序直接绑定到
.target
。您也可以执行
$(“#section.target”)
来限制范围。当您单击不在
#节
内的
.target
时,第二个将运行。
$('.target').on('click', function(){~})
$('#section .target').on('click', function(){~})