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] 我想很多人都会向我一样曾经 被新元素的事件绑 ...
随机推荐
- github上传项目
前置说明: 1.github上已经创建好的repositories,没有的可以自己创建一个 2.已经安装好的git,下载源推荐https://pan.baidu.com/s/1kU5OCOB#list ...
- Java基础-Eclipse环境搭建(02)
Eclipse工具 IDE(Integrated Development Environment)集成开发环境集成了编写功能,分析功能,编译功能一体化的开发软件. 调试功能等,其中编译在保存时运行(即 ...
- VB 用代码创建的控件和接收事件
在声明公共变量的位置加上这句就可以了 Dim WithEvents NewButton As Button form_load中添加 NewButton = New Button New ...
- 三种方式打印杨辉三角形(JAVA实现)
//采用一个二维数组打印杨辉三角 class Yanghui1 { public static void main(String[] args) { //设置杨辉三角的行数 int num = 10; ...
- Windows环境下多线程编程原理与应用读书笔记(3)————Windows环境中的多线程实现(3)
纤程 纤程(fiber): 相当于用户级别的线程或轻进程.纤程由Win32库函数支持,对核心是不可见的.纤程可以通过SwitchToFiber显示至另一合作纤程,以实现合作纤程之间的协同.线程是在Wi ...
- Cup
Cup Time Limit: 3000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others) Total Submissio ...
- JAVAscript学习笔记 js条件语句 第三节 (原创) 参考js使用表 (2017-09-14 15:55)
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8&quo ...
- iOS内置图片瘦身思路整理
一.前言 前段时间注意到我们APP的包大小超过100MB了,所以随口跟老板说了下能否采用字体文件(.ttf)替代PNG图片,老板对应用瘦身很感兴趣因此让我做下技术调研.这篇文章主要是将我们的各个技术方 ...
- 29.使用register_chrdev_region()系列来注册字符设备
1.之前注册字符设备用的如下函数注册字符设备驱动: register_chrdev(unsigned int major, const char *name,const struct file_ope ...
- SUID,SGID,SBIT这些到底是什么
SUID,SGID,SBIT这些都是文件的特殊权限. SUID(Set UID)文件执行过程中,用户拥有文件的root权限. SGID(Set GID)文件执行过程中,执行者拥有该文件的用户组的权限. ...