- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我一直在阅读有关 jquery live event 的内容,但仍然有点困惑?使用它有什么好处?
http://docs.jquery.com/Events/live
我知道它与绑定(bind)类似,但这两个事件对我来说仍然不合适。
只是寻找一些指针。
最佳答案
Warning: This answer is old. Still very useful, but
live
has been deprecated and removed in newer versions of jQuery. So read the answer, because the use cases haven't changed, and you will learn why and when to use less event handlers. But unless you are still using a really old version of jQuery (v1.4.2 or prior), you should considerer writing the new equivalent code instead. As documented in the jQuery API forlive
and copied here:Rewriting the
.live()
method in terms of its successors is straightforward; these are templates for equivalent calls for all three event attachment methods:
$( selector ).live( events, data, handler ); // jQuery 1.3+
$( document ).delegate( selector, events, data, handler ); // jQuery 1.4.3+
$( document ).on( events, selector, data, handler ); // jQuery 1.7+
有时,页面加载时您会看到一组元素,例如编辑链接:
<table>
<tr>
<td>Item 1</td>
<td><a href="#" class="edit">Edit</a></td>
</tr>
<tr>
<td>Item 2</td>
<td><a href="#" class="edit">Edit</a></td>
</tr>
<tr>
<td>Item 3</td>
<td><a href="#" class="edit">Edit</a></td>
</tr>
</table>现在,也许您使用 jQuery 有类似的东西:
$(document).ready(function() {
$('a.edit').click(function() {
// do something
return false;
});
});但是,如果在页面初始加载后动态向该表添加新元素会怎样?
$('table').append('
<tr><td>Item 4</td><td><a href="#" class="edit">Edit</a></td></tr>
');当您单击这个新项目上的“编辑”时,不会发生任何事情,因为事件是在页面加载时绑定(bind)的。进入直播。有了它,你可以像这样绑定(bind)上面的事件:
$(document).ready(function() {
$('a.edit').live('click', function() {
// do something
return false;
});
});现在,如果您添加任何新的
<a>
类为edit
的元素页面初始加载后,仍会注册此事件处理程序。但是这是如何实现的呢?
jQuery 使用所谓的事件委托(delegate)来实现此功能。在这种情况下或者当您想要加载大量处理程序时,事件委托(delegate)很有帮助。假设您有一个带有图像的 DIV:
<div id="container">
<img src="happy.jpg">
<img src="sad.jpg">
<img src="laugh.jpg">
<img src="boring.jpg">
</div>但是您有 100、200 或 1000 个图像,而不是 4 个图像。您希望将单击事件绑定(bind)到图像,以便在用户单击图像时执行 X 操作。按照您的预期进行操作...
$('#container img').click(function() {
// do something
});...然后将绑定(bind)数百个处理程序,它们都执行相同的操作!这是低效的,并且可能会导致重型网络应用程序性能下降。通过事件委托(delegate),即使您不打算稍后添加更多图像,对于这种情况,使用 live 也会更好,因为您可以将 one 处理程序绑定(bind)到容器并检查何时如果目标是图像,则单击,然后执行操作:
// to achieve the effect without live...
$('#container').click(function(e) {
if($(e.target).is('img')) {
performAction(e.target);
}
});
// or, with live:
$('img', '#container').live('click', function() {
performAction(this);
});由于 jQuery 知道可以稍后添加新元素或者性能很重要,因此它可能不会将事件绑定(bind)到实际图像,而是会像第一个示例中那样向 div 添加一个事件(实际上,我很喜欢确保它将它们绑定(bind)到主体,但也可能绑定(bind)到上例中的容器),然后委托(delegate)。这个
e.target
属性可以让它在事后检查单击/操作的事件是否与您可能指定的选择器匹配。要明确的是:这不仅有助于直接避免重新绑定(bind)事件,而且对于大量项目来说,速度会显着加快。
关于jquery - 使用 live() - 好处 - 类似于 bind(),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/748076/
如果函数定义顺序不对,Jslint 将指出错误。 显然 jslint 是严格的,但我想知道将函数按顺序排列是否有任何好处。 我的意思是在调用它们之前定义它们。 最佳答案 函数定义(和 var 语句)被
关闭。这个问题需要多问focused 。目前不接受答案。 想要改进此问题吗?更新问题,使其仅关注一个问题 editing this post . 已关闭 8 年前。 Improve this ques
我注意到Flask tutorial涉及到点的使用。看起来它只是用于在本地创建一个轮子,这将使服务器上的设置变得更容易,但作为一个网络开发新手,我很好奇:是否有人真的会一路将他们的网站上传到像 PyP
我一直在阅读有关 jquery live event 的内容,但仍然有点困惑?使用它有什么好处? http://docs.jquery.com/Events/live 我知道它与绑定(bind)类似,
这是我的故事:我已将我的应用迁移到 AndroidX,因为我需要从网上找到的库中获取一些新功能。 问题:我目前遇到了一些问题,因为我现在需要为 Cordova 开发一个插件来实现该应用程序的一部分。
在使用 RAD 或一般不使用单元测试时使用依赖注入(inject)是否有任何好处? 最佳答案 是的,有以下几个好处: 减少依赖 减少依赖携带 更多可重用代码 更多可测试代码 更具可读性的代码 更多引用
我目前正在构建一个通过 MSI Windows Installer 分发的产品。我们的客户正在使用不同的形式(例如我们在他们自己的 MSI 中)集成该产品,使用 Bootstrap /链接器(如 Wi
有人声称 Scala 的类型系统是图灵完备的。我的问题是: 这有正式的证据吗? 简单的计算在 Scala 类型系统中会是什么样子? 这对 Scala 这种语言有什么好处吗?与没有图灵完备类型系统的语言
我开始尝试使用 React,我注意到我正在制作的简单应用程序全部使用 JS。我的 html 页面只是一个空的 body 标签! 所以我有几个问题,因为我是这个框架的新手。 我的整个应用程序应该基本上都
我们有一个相当大的基于 Windows 的 1.1 .NET 应用程序,我们正在考虑升级到 2.0。我们考虑更新的主要原因是我们可以利用 Visual Studio 2008 进行项目的持续开发,以及
我有一个页面,其中内置了基于 ajax 的分页。分页用于页面中的“评论”功能。根据 Google 的网站管理员博客,具有 rel="next"和 rel="prev"值有利于 SEO。 我在头部添加了
我是一名优秀的程序员,十分优秀!