JQuery 预先绑定事件的问题

萝卜权 发布于 2015/07/24 11:11
阅读 3K+
收藏 1

这段时间遇到一个问题,JQuery绑定事件的时候,一般需要这个元素已经存在,比如 $('#aaa').click,那么必须有一个id为aaa的元素。

我想问的是,能不能先创建click事件,当有一个id为aaa的元素后,自动绑定上去?

加载中
2
pantrick
pantrick

你们一定没有仔细看jquery

正确做法在此

$(document.body).on('click',yourselector,function(event){});



pantrick
pantrick
回复 @萝卜权 : 那就采纳为正确答案吧
萝卜权
萝卜权
确实是这样 多谢
tinshen
tinshen
这个才是最靠谱的。 on对新创建的对象依然支持。
Ken5233
Ken5233
+10086
1
Jiazz
Jiazz
var xx = function() {
     console.log('hello world!');
}

$(document).find('#aaa').on('click', xx);

||

$(document).on('click', '#aaa', xx);


需要动态加载DOM吗 ?

0
超级大富
超级大富
这个id为aaa的元素是异步记载出来的?
0
java的苹果
java的苹果
来个定时器,如果有a这个id就绑定事件,
0
萝卜权
萝卜权

引用来自“超级大富”的评论

这个id为aaa的元素是异步记载出来的?
是的,是之后某一次在页面上新增的元素
超级大富
超级大富
加载后在回调函数里把事件绑定上去就行了
0
萝卜权
萝卜权

引用来自“java的苹果”的评论

来个定时器,如果有a这个id就绑定事件,
这个不太好吧,太耗资源
0
红薯官方
红薯官方

$('.listview .item-edit').live('click', function() {

    console.log("editing an item...");

});



0
萝卜权
萝卜权

引用来自“蓝水晶飞机”的评论

$('.listview .item-edit').live('click', function() {

    console.log("editing an item...");

});



live在1.9之后的jQuery就给删除了。。
红薯官方
红薯官方
楼下正确的。不过我在jquery.1.10还用过live 控制台输出有警告: JQMIGRATE: jQuery.fn.live() is deprecated 新做法是on('event', handler)
0
CodeZero
CodeZero

为什么要先创建事件,再等待目标创建呢?

既然你的目标都是后来加进去的,那么,加进去的同时添加事件不就好了么

Jiazz
Jiazz
动态加载DOM的时候需要这么做~~~
0
mark35
mark35
在上级已经存在不会被删除的对象上用on来绑定事件
OSCHINA
登录后可查看更多优质内容
返回顶部
顶部