- 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/
我需要修复 getLineNumberFor 方法,以便如果 lastName 的第一个字符位于 A 和 M 之间,则返回 1;如果它位于 N 和 Z 之间,则返回 2。 在我看来听起来很简单,但我不
您好,感谢您的帮助!我有这个: 0 我必须在每次点击后增加“pinli
Javascript 中是否有一种方法可以在不使用 if 语句的情况下通过 switch case 结构将一个整数与另一个整数进行比较? 例如。 switch(integer) { case
我有一列是“日期”类型的。如何在自定义选项中使用“之间”选项? 最佳答案 请注意,您有2个盒子。 between(在SQL中)包含所有内容,因此将框1设置为:DATE >= startdate,将框2
我有一个表,其中包含年、月和一些数字列 Year Month Total 2011 10 100 2011 11 150 2011 12 100 20
这个问题已经有答案了: Extract a substring between double quotes with regular expression in Java (2 个回答) how to
我有一个带有类别的边栏。正如你在这里看到的:http://kees.een-site-bouwen.nl/ url 中类别的 ID。带有 uri 段(3)当您单击其中一个类别时,例如网页设计。显示了一
这个问题在这里已经有了答案: My regex is matching too much. How do I make it stop? [duplicate] (5 个答案) 关闭 4 年前。 我
我很不会写正则表达式。 我正在尝试获取括号“()”之间的值。像下面这样的东西...... $a = "POLYGON((1 1,2 2,3 3,1 1))"; preg_match_all("/\((
我必须添加一个叠加层 (ImageView),以便它稍微移动到包含布局的左边界的左侧。 执行此操作的最佳方法是什么? 尝试了一些简单的方法,比如将 ImageView 放在布局中并使用负边距 andr
Rx 中是否有一些扩展方法来完成下面的场景? 我有一个开始泵送的值(绿色圆圈)和其他停止泵送的值(簧片圆圈),蓝色圆圈应该是预期值,我不希望这个命令被取消并重新创建(即“TakeUntil”和“Ski
我有一个看起来像这样的数据框(Dataframe X): id number found 1 5225 NA 2 2222 NA 3 3121 NA 我有另一个看起来
所以,我正在尝试制作正则表达式,它将解析存储在对象中的所有全局函数声明,例如,像这样 const a = () => {} 我做了这样的事情: /(?:const|let|var)\s*([A-z0-
我正在尝试从 Intellivision 重新创建 Astro-Smash,我想让桶保持在两个 Angular 之间。我只是想不出在哪里以及如何让这个东西停留在两者之间。 我已经以各种方式交换了函数,
到处检查但找不到答案。 我有这个页面,我使用 INNER JOIN 将两个表连接在一起,获取它们的值并显示它们。我有这个表格,用来获取变量(例如开始日期、结束日期和卡号),这些变量将作为从表中调用值的
我陷入了两个不同的问题/错误之间,无法想出一个合适的解决方案。任何帮助将不胜感激 上下文、FFI 和调用大量 C 函数,并将 C 类型包装在 rust 结构中。 第一个问题是ICE: this pat
我在 MySQL 中有一个用户列表,在订阅时,时间戳是使用 CURRENT_TIMESTAMP 在数据库中设置的。 现在我想从此表中选择订阅日期介于第 X 天和第 Y 天之间的表我尝试了几个查询,但不
我的输入是开始日期和结束日期。我想检查它是在 12 月 1 日到 3 月 31 日之间。(年份可以更改,并且只有在此期间内或之外的日期)。 到目前为止,我还没有找到任何关于 Joda-time 的解决
我正在努力了解线程与 CPU 使用率的关系。有很多关于线程与多处理的讨论(一个很好的概述是 this answer )所以我决定通过在运行 Windows 10、Python 3.4 的 8 CPU
我正在尝试编写 PHP 代码来循环遍历数组以创建 HTML 表格。我一直在尝试做类似的事情: fetchAll(PDO::FETCH_ASSOC); ?>
我是一名优秀的程序员,十分优秀!