首页 > Web开发 > 详细

jquery动态加载问题

时间:2015-02-15 19:20:25      阅读:551      评论:0      收藏:0      [点我收藏+]

对于append的元素,原有的方法不生效

解决:用on方法

找到的:http://www.zhidao91.com/jquery-html-live-on/

解决使用jQuery采用append添加的元素事件无效的方法

当我们使用jQuery动态加载html元素,但是元素上面又绑定了Click等事件,针对新添加的元素这些事件是无效的,那么应该怎样解决呢?
技术分享

live方法

live( type, fn )
jQuery 1.3中新增的方法。给所有当前以及将来会匹配的元素绑定一个事件处理函数(比如click事件)。也能绑定自定义事件。
目前支持 click, dblclick, mousedown, mouseup, mousemove, mouseover, mouseout, keydown, keypress, keyup。
还不支持 blur, focus, mouseenter, mouseleave, change, submit
与bind()不同的是,live()一次只能绑定一个事件。

这个方法跟传统的bind很像,区别在于用live来绑定事件会给所有当前以及将来在页面上的元素绑定事件(使用委派的方式)。比如说,如果你给页面上所有的li用live绑定了click事件。那么当在以后增加一个li到这个页面时,对于这个新增加的li,其click事件依然可用。而无需重新给这种新增加的元素绑定事件。比如下面的代码。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
<html>
<head>
<script type="text/javascript" src="/jquery/jquery.js"></script>
<script type="text/javascript">
$(document).ready(function(){
  $("button").live("click",function(){
    $("p").slideToggle();
  });
});
</script>
</head>
<body>
<p>这是一个段落。</p>
<button>请点击这里</button>
</body>
</html>

on 方法

但是随着jQuery的版本升级,自从jQuery 1.9及其以上已经无法使用live了,那么没有办法了吗,不是的,对于jQuery1.9版本及其以上可以使用on,其效果等同于live。下面的on的使用方法

1
2
3
4
5
6
7
<script>
$(document).on("click", ".waiting-save", function () {
 $(this).html(‘@T("Saving...")‘)
     $(this).attr("disabled", "");
     SaveAction(this);
   });
</script>

原创文章,转载请注明: 转载自知道91

本文链接地址: 解决使用jQuery采用append添加的元素事件无效的方法

jquery动态加载问题

原文:http://www.cnblogs.com/gary-tao/p/4293337.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!