- mongodb - 在 MongoDB mapreduce 中,如何展平值对象?
- javascript - 对象传播与 Object.assign
- html - 输入类型 ="submit"Vs 按钮标签它们可以互换吗?
- sql - 使用 MongoDB 而不是 MS SQL Server 的优缺点
我已经阅读了 jQuery official website
上每个函数的文档。 ,但以下功能之间没有这样的比较列表:
$().click(fn)
$().bind('click',fn)
$().live('click',fn)
$().delegate(selector, 'click', fn)
$().trigger('click') // UPDATED
$().on('click', selector ,fn); // more UPDATED
请避免任何引用链接。
$.trigger
功能。它的工作方式与上述功能类似吗?
.on
加入
v1.7 我认为这个以某种方式涵盖了上述所有功能要求。
最佳答案
在您阅读本文之前,pull this list of events up in another page, the API itself is tremendously helpful, and all of what I'm discussing below is linked directly from this page .
一、 .click(function)
字面上是 .bind('click', function)
的快捷方式,它们是等价的。在绑定(bind)处理程序时使用它们 直接到一个元素 ,像这样:
$(document).click(function() {
alert("You clicked somewhere in the page, it bubbled to document");
});
.live()
和
.delegate()
类似,
.delegate()
实际使用
.live()
在内部,它们都监听冒泡的事件。
这适用于新旧元素 ,它们以相同的方式冒泡事件。当您的元素可能发生变化时,您可以使用这些,例如添加新行、列表项等。如果您没有将留在页面中且不会在任何时候被替换的父/公共(public)祖先,请使用
.live()
,像这样:
$(".clickAlert").live('click', function() {
alert("A click happened");
});
.delegate()
处理它。 ,像这样:
$("#commonParent").delegate('.clickAlert', 'click', function() {
alert("A click happened, it was captured at #commonParent and this alert ran");
});
.live()
的工作原理几乎相同,但事件在被捕获和执行处理程序之前冒泡的次数较少。这两者的另一个常见用途是说你的类在一个元素上发生了变化,不再匹配你最初使用的选择器......使用这些方法,选择器被评估
事件时 ,如果匹配,则处理程序运行...因此不再匹配选择器的元素很重要,它将不再执行。与
.click()
然而,事件处理程序绑定(bind)在 DOM 元素上,事实上它不匹配用于查找它的任何选择器是无关紧要的......事件被绑定(bind)并且它一直保持到该元素消失,或者处理程序是通过
.unbind()
删除.
.live()
的另一个常见用途和
.delegate()
是
性能 .如果您要处理大量元素,则将单击处理程序直接附加到每个元素既昂贵又耗时。在这些情况下,设置单个处理程序并让冒泡来完成工作更经济,
take a look at this question where it made a huge difference ,这是应用程序的一个很好的例子。
.trigger()
和
.triggerHandler()
.
.trigger('eventName')
为常见事件内置了一些快捷方式,例如:
$().click(fn); //binds an event handler to the click event
$().click(); //fires all click event handlers for this element, in order bound
.trigger()
触发事件处理程序(但大多数情况下不是默认操作,例如将光标放在单击的正确位置
<textarea>
)。它使事件处理程序按照它们被绑定(bind)的顺序发生(就像 native 事件一样),触发 native 事件操作,并在 DOM 中冒泡。
.triggerHandler()
通常是出于不同的目的,在这里您只是尝试触发绑定(bind)处理程序,它不会导致 native 事件触发,例如提交表格。它不会冒泡 DOM,并且它不可链接(它返回该事件的最后绑定(bind)事件处理程序返回的任何内容)。例如,如果您想触发
focus
事件但实际上并没有聚焦对象,您只需要与
.focus(fn)
绑定(bind)的代码运行,这会做到这一点,而
.trigger()
会这样做以及实际聚焦元素并冒泡。
$("form").submit(); //actually calling `.trigger('submit');`
<form>
.但是,如果您只是想验证,因为它是通过
submit
连接的。事件处理程序,但不提交
<form>
之后,您可以使用
.triggerHandler('submit')
,像这样:
$("form").triggerHandler('submit');
.validate()
方法,但它是一个很好的意图说明)
关于javascript - jQuery `click` 、 `bind` 、 `live` 、 `delegate` 、 `trigger` 和 `on` 函数之间的区别(举例)?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2954932/
平时很少在jquery中用到this。查看代码时发现用到了,就调试出this的值,心想原来如此。还是挺有用的。这里总结一下this与$(this)的区别和使用。 $(this)生成的是什么?
使用单例类和应用程序范围的托管 bean 来保存应用程序数据有区别吗? 我需要查找某些 JNDI 资源,例如远程 bean 接口(interface),因此我为自己编写了一个单例来缓存我的引用并且只允
如果您仔细查看包含的图片,您会注意到您可以使用 Eclipse IDE 重构 Groovy 代码并将方法转换为闭包,反之亦然。那么,闭包到底是什么,它与方法有什么不同呢?有人可以举一个使用闭包的好例子
vagrant box repackage有什么区别( docs ) 和 vagrant package ( docs )? 我意识到 vagrant package仅适用于 VirtualBox 提
我想看看是否有人可以解释为什么以下代码适用于 valueOf 但不适用于其他代码。 import java.math.BigDecimal; public class Change { publ
这个问题已经有答案了: 已关闭12 年前。 Possible Duplicates: What is Closures/Lambda in PHP or Javascript in layman te
This question already has answers here: Vagrant, Docker, Puppet, Chef (3个答案) 2年前关闭。 docker和chef有什么共同
以下代码在95%的机器上产生相同的输出,但是在几台机器上却有所不同。在 Debug模式下,输出: Changing from New to Fin OK 但在 Release模式下: Changing
////Creating Object var Obj; // init Object Obj= {}; 它们之间有什么区别两个? 有没有可能把它变成一个单行? 这样使用有什么好处吗?
我想找出定时器服务之间的区别。我应该使用哪个以及何时使用。我正在使用 Jboss 应用服务器。 1) java.ejb.Schedule。 @Schedule注解或配置自xml。 2) javax.e
我发现在 C++ 中可以通过三种不同的方式将对象传递给函数。假设我的类(class)是这样的: class Test { int i; public: Test(int x);
有什么区别。 public class Test { public static void main(String args[]) { String toBeCast = "c
如果我有一列,设置为主索引,设置为INT。 如果我不将其设置为自动递增,而只是将唯一的随机整数插入其中,与自动递增相比,这是否会减慢 future 的查询速度? 如果我在主索引和唯一索引为 INT 的
这两种日期格式有什么区别。第一个给出实际时间,第二个给出时间购买添加时区偏移值。 NSDateFormatter * dateFormatter = [[NSDateFormatter alloc]
如果有一个函数,请说foo: function foo() { console.log('bar'); } 那么在 JavaScript 中,从另一个函数调用一个函数有什么区别,如下所示: f
关闭。这个问题是opinion-based 。目前不接受答案。 想要改进这个问题吗?更新问题,以便 editing this post 可以用事实和引文来回答它。 . 已关闭 4 年前。 Improv
代码是什么: class Time { private: int hours; int minutes; int seconds; pu
我知道这是非常基本的,但有人介意解释一下这两个数组声明之间的区别吗: #include array myints; ...和: int myints[5]; ...以及为什么 myints.size
我学会了如何根据 http://reference.sitepoint.com/css/specificity 计算 css 特异性但是,基于this reference,我不明白伪类(来自c)和伪元
为什么在运行 2) 时会出现额外的空行?对我来说 1 就像 2。那么为什么 2) 中的额外行? 1) export p1=$(cd $(dirname $0) && pwd) #
我是一名优秀的程序员,十分优秀!