jQuery1.7版本之后的on方法

之前就一直受这个问题的困扰,在jQuery1.7版本之后添加了on方法,之前就了解过,其优越性高于 live(),bind(),delegate()等方法,在此之前项目中想用这个来测试结果发现,居然动态生成的标签点击了没反应,而live方法却能 够支持,于是乎到处查资料,问网友,结果找了好久在一篇文章中终于找到了答案。。。

jQuery 使用on绑定动态生成的元素时,不能直接用该对象操作,而是选择其非动态生成的父节点然后再找到本身才能达到效果。大家看看源码就知道了。生成的按钮基数项on方法点击无效live方法有效。

比如页面上有下边两个元素:

<input type="button" name="addbtn" value="按钮添加" />
<div id="test"></div>

使用下边的jQuery代码大家可以对比看看区别:

$(function () {
    var a = 1,
    $_div = $(‘#test‘);
    $(‘input[name=addbtn]‘).on(‘click‘, function () {
        $_div.append(‘<input type="button" name="test‘ + a + ‘" value="按钮‘ + a + ‘"/>‘);
        a++;
    });

    //偶数项点击事件
    $_div.on(‘click‘, ‘input[name^=test]:even‘, function () {
        alert(‘我是有效的on方法,你能看见我吗:‘ + this.value);
    });

    //奇数项绑定的点击事件  发现点击无效,而是用live方法却能够支持
    $(‘input[name^=test]:odd‘).on(‘click‘, function () {
        alert(‘我是无效的on方法,你不能看见我‘);
    });

    //奇数项绑定的点击事件  发现点击无效,而是用live方法却能够支持
    $(‘input[name^=test]:odd‘).live(‘click‘, function () {
        alert(‘我是live方法,你能看见我吗:‘ + this.value);
    });
});
时间: 2024-07-29 02:16:53

jQuery1.7版本之后的on方法的相关文章

jQuery1.9+版本的.on使用方法笔记

在jQuery1.7以前,异步加载的内容如果有click事件,都是使用.live方法.jQuery升级到1.9以后,本方法不再适用,改为.on方法..on方法可以接受3个参数:事件名,触发选择器,事件函数.举例说明:某html文档中有一个id为parent的div,在这个div内再添加一个id为son的span.我们要为这个span绑定1个事件,其js代码为:$("#parent").on("click","#son",function(){al

学习笔记:jquery1.9版本后废弃的函数和方法

jQuery1.9+ 废弃的函数和方法 升级Jquery版本遇到的问题 (转载自:http://www.ppblog.cn/jquery1-9live.html  版权归原作者所有) jQuery1.9中改变的地方 Jquery1.9中改变了很多东西,具体的升级可以参考一下官方的升级指南. .toggle(function, function, … ) 方法删除 这个方法绑定两个或多个处理程序到匹配的元素,用来执行交替的点击事件.它不应该被混同于显示或隐藏匹配元素.toggle( )方法,因为它

JQuery1.11版本对prop和attr接口的含义分离导致问题分析

prop 和 attr 接口 实验中, 在jquery1.7版本, attr("value")  和 val() 接口获取 input 控件的值, 都是一致的, 都是当前控件值. 但是 jquery1.11版本,已经将 这两个接口的返回值分离,  attr("value") 获取的是 控件的初始值(default value), 只有val()属性才能获取到 控件当前值, 例如 用户修改 了输入的值, 必须使用val()获取最新值. 对于 checkbox 和 ra

使用Jquery1.9 版本 来实现全选

在使用Jquery实现全选以及反选的时候, 使用attr()实现的时候,在浏览器第一次运行可以全选,但是第二次再全选,不管用.  通过查找资料,用 prop()方法代替attr()方法就行了. 注意: Jquery 1.6之后,可以通过attr方法去获得属性,通过prop方法去获得特性. 在遇到要获取或设置checked,selected,readonly和disabled等属性时,用prop方法. jquery1.6中新加了一个方法prop(),官方解释只有一句话:获取在匹配的元素集中的第一个

ngui3.5.7 版本Scroll View实现方法

现在网上的教材都是老版本的,现在的版本并没有Drag Panel Contents脚本,所以我对着现在的DEMO琢磨出了实现方法 第一,创建NGUI ui,其他组件不必创建,我只要NGUI这个摄影机,将这个NGUI设置为2D层,下面子组件都属于2D层 创建Scroll View,之后在下面创建Grid把他里面的脚本去掉,添加UICenterOnChild这个脚本,之后在Grid下面创建你要用的组件,在这些组件上添加UIDrag Scroll View和UICenter On Click 还有Bo

iOS 32位、 64位系统兼容性设置-Xcode创建支持IOS4.3以上版本的应用的方法

方法一: 如果是Xcode 5的话步骤为 点击项目名称->Build Settings->搜索 Architectures 这个里面的原始的值是Standard architectures(armv7,armv7s,arm64) 点击这个值,在下拉列表框中选择 Standard architectures(armv7,armv7s) ,然后保存项目,转到 General里面去就可以看到项目的Target选项里面会从4.3到7.0都有. 如果是Xcode 5.1的话步骤为 点击项目名称->

MySQL 5.7.18 zip版本的安装使用方法

MySQL 5.7.18 zip版本的安装使用方法 这个版本的MySQL不像那种点击就可以立即安装,一直下一步就OK的,这个需要自己进行配置,虽然有点小麻烦,我还是比较喜欢使用这个版本,因为比较单一,不会因为安装数据库,还要安装其他插件工具. 1.下载路径 官网MySQL zip文件下载地址:https://dev.mysql.com/downloads/mysql/ 点击 download 按钮,根据提示进行下载,不用登录账号:(下载文件到,如:D:\\) 2.将下载到D:\\下的 mysql

debian7更换gcc版本的二种方法分享

debian7更换gcc版本的二种方法分享 最近在编译qt,之前用的是debian6,gcc版本是gcc-4.4,当使用debian7时,编译遇到了很多跟debian6不一样的问题,debian7的默认gcc使用的是gcc-4.7,可能是编译器版本的问题,所以需要将debian7的gcc版本更换为gcc-4.4,办法如下:(推荐用方法一) 方法一: 安装gcc4.4和g++4.4 复制代码 代码如下: sudo apt-get install gcc-4.4sudo apt-get isntal

MySQL新旧版本ORDER BY 处理方法

MySQL 的order by 涉及到三个参数:A. sort_buffer_size 排序缓存.B. read_rnd_buffer_size 第二次排序缓存.C. max_length_for_sort_data 带普通列的最大排序约束. 我来简单说下MySQL的排序规则.假设查询语句select * from tb1 where 1 order by  a ; 字段a没有建立索引:以上三个参数都足够大.MySQL内部有两种排序规则:第一种,是普通的排序.这种排序的特点是节省内存,但是最终会