jquery 动态创建的元素,绑定事件无效之解决方法
今天遇到一个问题,动态创建的元素,绑定事件无效,如下:
js 代码如下:
var OaddX = $('.detright div.duibi div.duibox ul li span'); // 所有的X;
var Ojiaru = $('.detright div.duibi div.duibox div.tiao li button'); // 添加新车对比按钮
OaddX.on('click',function(){
var OspanX = $('.detright div.duibi div.duibox ul li span');
if(OspanX.length<){
Oduicon.css('display','none');
};
$(this).parent().remove();
});
Ojiaru.on('click',function(){
var OaddX1 = $('.detright div.duibi div.duibox ul li span');
if(OaddX1.length>3){return false;}
var Oul1 = $('.detright div.duibi div.duibox ul');
var Ojianei = $('.detright div.duibi div.duibox div.tiao li.titles');
var str = "<span class='dui_guan'>X</span>";
str += "<a href='javascript:;'>" + $.trim( Ojianei.html() ) + "</a>";
var li1 = $('<li></li>');
li1.append(str);
Oul1.append(li1);
});
运行结果:

要是用效果,就把 OaddX 的点击事件重新写,改成如下:
var OaddX = $('.detright div.duibi div.duibox ul li span'); // 所有的X;
var Ojiaru = $('.detright div.duibi div.duibox div.tiao li button'); // 添加新车对比按钮
$("body").on('click','.detright div.duibi div.duibox ul li span',function(){
var OspanX = $('.detright div.duibi div.duibox ul li span');
if(OspanX.length<){
Oduicon.css('display','none');
};
$(this).parent().remove();
});
Ojiaru.on('click',function(){
var OaddX1 = $('.detright div.duibi div.duibox ul li span');
if(OaddX1.length>3){return false;}
var Oul1 = $('.detright div.duibi div.duibox ul');
var Ojianei = $('.detright div.duibi div.duibox div.tiao li.titles');
var str = "<span class='dui_guan'>X</span>";
str += "<a href='javascript:;'>" + $.trim( Ojianei.html() ) + "</a>";
var li1 = $('<li></li>');
li1.append(str);
Oul1.append(li1);
});
代码 差异如下:

运行结果:

在 jquery中,如果需要进行动态添加元素,并且添加的元素要具有动态绑定事件的效果,那么可以把元素的绑定事件交给父元素或者body元素来实现
规则如下:
1. $('body').on('click','未来要添加的元素',function(){ ..... }) ;
2. '父元素'.on('click','未来要添加的元素',function(){ ..... }) ;
在jquery中,个人感觉比较方便,不用再去自己写js原生的 委托事件 来进行动态绑定
jquery 动态创建的元素,绑定事件无效之解决方法的更多相关文章
- Jquery动态添加的元素绑定事件的3种方法
假设我们点击li标签,弹出他的文本,如果是动态添加的li,点击是没有效果的,压根弹不出来文本. 下面博主分享一下为动态添加的元素绑定事件的三种方法,网上一般都是两种,我在这里多增加了一种. 事件案例: ...
- js动态创建的元素绑定事件
新创建的元素用传统的办法无法绑定,需要用live方法. 例: $('.rule').live('mouseover', function () { $(this).addClass("can ...
- 处理jQuery append加入的元素 绑定事件无效的方法
通过jquery append(或者before.after,一样)新添加进网页的元素,常用的事件不能触发,比如:append了id 为 abc 的元素,那么 $(#abc).click(functi ...
- Jquery 动态生成的元素绑定事件
使用 on方法 $("#id1").on("click","#id2",function(){}) 这里要注意的是#id1必须是原来就存在的 ...
- 用jquery动态生成的元素绑定事件
$(document).on("click",".class a",function(){ })
- jQuery 为动态添加的元素绑定事件
在使用jquery的方式为元素绑定事件时,我经常使用bind或者click,但这只能为页面已经加载好的元素绑定事件.像需要用ajax的方式请求远程数据来动态添加页面元素时,显然以上几种绑定事件的方式是 ...
- WEB前端技巧之JQuery为动态添加的元素绑定事件.md
jquery 为动态添加的元素绑定事件 如果直接写click函数的话,只能把事件绑定在已经存在的元素上,不能绑定在动态添加的元素上 可以用delegate来实现 .delegate( select ...
- jQuery中如何给动态添加的元素绑定事件
jquery中绑定事件一般使用bind,或者click,但是这只能是对已经加载好的元素定义事件,那些后来添加插入的元素则需要另行绑定.在1.7版本以前使用live.但是在1.8版本以后推荐使用on.这 ...
- 给Jquery动态添加的元素添加事件
给Jquery动态添加的元素添加事件 来源:[http://wangqixia.diandian.com/post/2011-05-10/6597866] 我想很多人都会向我一样曾经 被新元素的事件绑 ...
随机推荐
- java如何调用接口方式一
java如何调用接口 其实对于java调用接口进行获取对方服务器的数据在开发中特别常见,然而一些常用的基础的知识总是掌握不牢,让人容易忘记,写下来闲的时候看看,比回想总会好一些. 总体而言,一些东西知 ...
- svn的简介
Svn(Subversion)是近年来崛起的版本管理工具,在当前的开源项目里(J2EE),几乎95%以上的项目都用到了SVN.Subversion项目的初衷是为了替换当年开源社区最为流行的版本控制软件 ...
- python实现进度条和百分比同时显示
python中同时打印进度条和百分比 仅打印进度条: import sys,time for i in range(100): sys.stdout.write('>') sys.stdout. ...
- 对Spring事务的一些误解
提起spring事务,就会让人联想起四大基本特征,五个隔离级别,七大传播特性.相信大多数人都知道这些东西,但是知道是一回事情,能用好真的是另一回事了.在使用Spring事务的时候,我曾遇到过几个比较严 ...
- Ionic3 一些命令
ionic start --help E:\Projects\ionic>ionic start --help ionic start - Create a new project This c ...
- Andrew 机器学习课程笔记
Andrew 机器学习课程笔记 完成 Andrew 的课程结束至今已有一段时间,课程介绍深入浅出,很好的解释了模型的基本原理以及应用.在我看来这是个很好的入门视频,他老人家现在又出了一门 deep l ...
- CREATE DATABASE RoomReservation
要从我的模型开始构建我的RoomReservation数据库对象,我将创建表对象. 要在SQL Server中创建表,我需要使用CREATE TABLE语句. 使用CREATE TABLE语句,我将能 ...
- Branch Prediction
Pipeline的优点 现代微处理器的pipeline中包含许多阶段,粗略地可以分成fetch.decode.execution.retirement,细分开来可以分成十多甚至二十多个阶段.在处理器处 ...
- 算法:javascript截取字符串
题目: Given a string, find the length of the longest substring without repeating characters. Examples: ...
- linux-rmdir
linux-rmdir rmdir命令用于删除空目录,删除的目录的里面必须无任何东西,有点鸡肋的命令 从下面先建立了一个a文件夹. 命令: rmdir a,即可删除这个空目录,ls 就找不到这个文件夹 ...