一、原始需求

在实际项目的时候,遇到了一个问题,就是通过JS动态生成的元素,无法触发JS事件。

原始的JS代码:

$(function () {
$(".original").click(function () {
alert("123");
});
})

上述类型的JS代码在处理随着页面加载而加载的DOM元素是没有问题的。但是在处理页面加载完成后,通过动态添加的方式添加上的元素是无效的,需要另外利用Jquery绑定。

动态添加元素的JS代码:

$(function () {
$(".run").click(function () {
var btn = "<button class='original'>我是新来的的</button>";
$(".out").append(btn);
});
})

此时如果点击 新添加的按钮,通过上述声明式无法处理响应事件的。

PS:至于原因是什么,这个我也不太清楚。

二、jQuery的on方法

通过查阅相关说明,发现jQuery的on()方法是支持在动态添加的元素上绑定事件的,使用见:

官网说明(英文):官方API解释

中文说明(中文):中文API解释(推荐)

详细说明请参考上述网站,这里只提出几个重点来讲解:

  1. 使用格式:jQueryObject.on( events [, selector ] [, data ], handler )---[此为可选项]
  2. 解释:events为单个或多个事件,handler为触发事件要执行的动作。
  3. 对于selector而言,如果为null或不写那么是绑定jQueryObject匹配到的元素;如果不为null,则表明绑定的是jQuyerObject的后台元素中所有符合selector要求的元素。

三、处理方法

<script type="text/javascript">
$(function () {
// 方法1
$(document).on("click", ".original", function () {
alert("HHHH");
});
//无效?
$(".original").on("click", function () {
alert("HHHH");
});
})
</script>

方法1肯定有效,但是很奇怪方法2无效。。。

四、补充

思考好了再补充,留待此次。。。

jQuery动态绑定的更多相关文章

  1. jquery动态绑定事件

    什么是动态绑定? 动态绑定是指动态添加的DOM节点或者html元素,他们最开始时运行的时候是不存在的.如果要给这些动态加入的节点增加事件,就必须要用jquery的on方法来绑定事件. $('.cont ...

  2. jquery 动态绑定bind()及模拟鼠标点击A链接

    近来自觉前端有小小进步,幸而记之. 1.两个 css class 紧挨在一起 则在html元素中,要同时拥有这两个class,才能起作用 .block.db{ background-image:url ...

  3. jquery - 动态绑定事件

    举个例子: html页面 <div><button type="button" class="test">测试</button&g ...

  4. jquery动态绑定hover没有效果

    在JQuery中,hover()函数本身是对 mouseenter && mouseleave 的封装,然而在原生event中,并没有hover这一事件,所以在传递参数hover时,并 ...

  5. jQuery 动态绑定的点击事件

    $(function () { , $_div = $('#test'); $('input[name=addbtn]').on('click', function () { $_div.append ...

  6. jQuery 动态绑定插件livequery的用法

  7. jQuery动态绑定事件(左右移动)

    <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8&quo ...

  8. $("#XXX").click()和$("#YYY").on("click","指定的元素",function(){});的区别(jQuery动态绑定事件)

    //绑定 下一页 的点击事件 $("a[aria-label='Next']").click(function(){ $("a[aria-label='Previous' ...

  9. Jquery动态绑定事件处理函数 bind / on / delegate

    1.bind方法绑定的事件处理函数不会应用到后来添加到DOM中的新元素.比如你在用bind给页面元素绑定事件之后,又新添加了一些与之前绑定过事件的元素一样的DOM元素,但是这些事件并不能在新的DOM元 ...

随机推荐

  1. TeX括号。。。

    #include <stdio.h> #include <stdlib.h> int main() { ; ) { if(c=='"') { printf(" ...

  2. IE11中的F12无效的问题

    最近做的一个项目中,h5中的video标签IE11在有的机器上兼容,有的机器上不兼容,很是让人头疼.将IE卸载后重装又发现最新的IE11中F12开发者工具失效.面对F12失效的问题,具体解决办法如下: ...

  3. 状压dp找寻环的个数 Codeforces Beta Round #11 D

    http://codeforces.com/problemset/problem/11/D 题目大意:给你n个点,m条边,找该图中有几个换 思路:定义dp[i][j]表示i是圈的集合,j表示该集合的终 ...

  4. 深入理解javascript执行上下文(Execution Context)

    本文转自:http://blogread.cn/it/article/6178 在这篇文章中,将比较深入地阐述下执行上下文 - Javascript中最基础也是最重要的一个概念.相信读完这篇文章后,你 ...

  5. Java 反射实例

    实体类:Userpackage com.reflect.model; public class User{ private User(int id, String username, String p ...

  6. 【转】哦,mysql 的其它发行版本Percona, mariadb

    原文:http://geek.csdn.net/news/detail/130146 2016年11月25日,沃趣科技"智慧应用 数据先行"2016产品发布会暨新三板挂牌庆祝会在杭 ...

  7. 我为什么坚持DBA一定要懂开发

    我为什么坚持DBA一定要懂开发时间 2016-03-23 15:34:08 张碧池的幸福生活原文 http://pottievil.com/我为什么坚持dba一定要懂开发/主题 DBA 数据库最近手头 ...

  8. 【java】基础中的杂乱总结(二)

    1 内部类进阶 package package8; //原则:先用内部类写 之后由于内部类匿名无法引用 用其继承的父类或实现的接口名 //再复写所有的抽象方法即可(是所有,否者还是抽象的,无法创建对象 ...

  9. 关于html5的几个新标签在IE9之前不支持的解决办法

    IE8及之前的浏览器不支持用CSS的方法来使用这些尚未支持的结构元素,为了在Internet Explorer浏览器中也能正常使用这些结构元素,需要使用JavaScript脚本,如下:<scri ...

  10. HDU 2674 N!Again

    一开始以为有循环节,输出了前100项发现n>40都是0.因此,水题.... #include<cstdio> ]; ; int main() { a[]=; ; i<=; i+ ...