为什么要使用jQuery on()而不是click()

杰森·戴维斯(JasonDavis):

当前使用jQuery,当我需要在发生点击时做一些事情时,我会像这样...

$(".close-box").click( function() {
    MoneyBox.closeBox();
    return false;
});

我正在看别人在项目上拥有的一些代码,他们这样做是...

$(".close-box").live("click", function () {
    MoneyBox.closeBox();
    return false;
});

请注意,就我所知,它似乎在做相同的事情,除了它们使用的是live()函数(现在已弃用并且jQuery文档说使用)on()代替了,但是无论哪种方式,为什么要使用live / on()而不是我的第一个示例?

黄安德(Andreas Wong):

因为您可能具有动态生成的元素(例如,来自AJAX调用),所以您可能希望具有以前绑定到同一元素选择器的相同单击处理程序,然后使用on()带选择器参数来“删除” click事件

展示:

http://jsfiddle.net/AJRw3/

on()click()如果未指定选择器也可以是同义词

$('.elementClass').click(function() { // code 
});

与...同义

$('.elementClass').on('click', function() { // code
});

从某种意义上说,它仅将处理程序一次添加到所有具有class的元素上elementClasselementClass例如$('<div class="elementClass" />')如果您有一个新的源,则处理程序将不会绑定到该新元素上,则需要执行以下操作:

$('#container').on('click', '.elementClass', function() { // code
});

假设#container.elementClass祖先

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

为什么要使用IHttpActionResult而不是HttpResponseMessage?

为什么要使用isinstance()而不是type()?

为什么要使用uImage而不是zImage

为什么要使用var而不是类型?

为什么要使用beforeRouteEnter而不是挂载?

为什么要使用Runnable而不是Thread?

为什么要使用移位而不是for循环?

为什么要使用资源而不是路由?

为什么要使用Char而不是String?

为什么要使用fillRect而不是translation?

为什么要使用责任链而不是简单的for循环?

为什么要使用“ int input {0};” 而不是“ int intput”;

为什么要使用null!=而不是任何东西!= null?

为什么我要使用异步而不是非异步方法

为什么要使用block \ grid而不是for循环?

为什么要使用Optional.of而不是Optional.ofNullable?

为什么要使用.toString(32)而不是.toString(36)?

为什么要使用工厂而不是“新工厂”?

为什么要使用ClassCastException而不是编译错误?

为什么要使用指针而不是对象本身?

为什么要使用非阻塞waitpid而不是阻塞等待?

为什么要使用迭代器而不是数组索引?

为什么要使用REST而不是基于SOAP的服务?

为什么要使用归约变量而不是原子变量?

在python中,为什么要使用日志记录而不是print?

为什么要使用Wget而不是浏览器?

为什么要使用空的抽象类而不是接口?

为什么 Laravel 主要使用 Facades 而不是单例?

关于for(),为什么要使用i ++而不是++ i?