直接绑定和使用每个函数之间的区别
The difference between directly binding and using each function
我对每个函数都感到困惑。
小提琴
<html>
<head>
<script type="text/javascript" src="jquery-1.8.0.min.js"></script>
<script>
$(document).ready(function(){
//$(".a").click(function(){
// alert("hi");
//});
$(".a").each(function(){
$(this).click(function(){
alert("hi");
});
});
});
</script>
</head>
<body>
<div class="a">hi</div>
<div class="a">hi</div>
</body>
</html>
直接使用.click
函数和使用.each
有什么区别?他们两个都有效。
多谢。
编辑
如果这两种方法相同,您能否举例说明为什么.each
是必要的?
其实这里有区别。使用 .each
您可以在每次迭代中创建一个新函数,并且每个元素都会获得一个不同的函数对象作为事件处理程序分配。
如果对整个选择调用.click
,则情况并非如此。它将使用您传递给它的函数作为每个元素的事件处理程序。不过,最终的行为是一样的。
您可以通过在迭代元素之前创建一次来避免创建新的函数对象:
var handler = function(){
alert("hi");
};
$(".a").each(function(){
$(this).click(handler);
});
但没有必要这样做。 .click
内部调用.on
,而内部调用.each
又将调用来迭代所选元素并绑定事件处理程序。
.each
只是一种通用的方式来迭代元素并对它们执行任何操作。例如,您可能希望将每个元素中的单词替换为另一个单词:
$('a').each(function() {
$(this).text($(this).text().replace('foo', 'bar'));
});
这不是一个很好的例子,因为这里也有一个更整洁的方法,但我希望它能给你一些想法。
为什么这两种方式之间存在性能差异?
外部.each
调用是冗余的,会增加额外的开销。"调用链"将如下所示:
each (1 time)
-> callback (N times)
-> click (1 time) (N times in total)
-> on (1 time) (N times in total)
-> each (1 time) (N times in total)
-> callback (which ultimately adds the event handler) (1 time) (N times in total)
相比之下,当您直接调用.click
时,大致会发生这种情况:
click (1 time)
-> on (1 time)
-> each (1 time)
-> callback (which ultimately adds the event handler) (N times)
因此,不仅执行了更多的函数,而且还执行了相同的函数(如.click
nad .on
(多次执行。每个函数每次调用可能会进行一次检查或初始化变量,因此显然,如果您多次调用它,则需要更多时间。
列表上的.click
($('selector').length > 1)
由 jQuery 在内部循环以添加事件。
.each
和.click
只是由你完成的......但它通过相同的jQuery迭代代码。
我更喜欢使用第一个,因为它在你最后更整洁。
没有区别,如果你遵循jquery源代码,它相当于同样的事情。因此,我建议使用简单的click
。
- Jquery在函数之间传递表行
- d3中堆栈函数和嵌套函数之间的差异
- 如何在函数之间切换
- JavaScript/jQuery-添加添加和删除类与下一个函数之间的延迟
- Javascript-defineProperty和直接在对象上定义函数之间的区别
- 在函数之间传递javascript变量
- 两个函数之间的角度承诺
- Javascript创建函数,以便在其他函数之间共享变量
- 直接绑定和使用每个函数之间的区别
- 节点模块对象范围:在所有函数之间共享一个对象
- js 函数之间使用参数的区别
- angularjs+ui.router:指令控制器和链接函数之间的不同行为
- 如何在onchange事件中的两个函数之间进行选择
- 在使用ajax调用的函数之间调用相同的函数
- 在JavaScript函数之间传递JSON值
- 试图理解JavaScript中原型和构造函数之间的区别
- 什么'新函数和函数之间的区别
- javascript函数之间的OR运算符
- 以下jquery和requireJS函数之间的区别
- 在Javascript中的函数之间共享变量