js--未来元素
通过动态生成的标签,在生成标签直接绑定事件是无效的。
eg:html标签
<div id="tree">
</div>
<script>
$('#tree .items').on('click', function(e) {
console.log(e);
e.stopPropagation();
if($(e.target).find('ul').is(':visible')) {
$(e.target).find('ul').hide();
} else {
$(e.target).find('ul').show();
}
$(e.target).siblings().find('ul').hide();
});
function creatHtml(data) {
var length = data.length;
var htms = '<ul>'
for(var i = 0; i < length; i++) {
if(data[i].children && data[i].children.length > 0) {
htms += '<li class="items" >' + data[i].name;
htms += creatHtml(data[i].children);
} else {
htms += '<li>' + data[i].name;
}
htms += '</li>';
}
htms += '</ul>';
return htms;
}
$('#tree').html(creatHtml(arr));
$('.items').find('ul').hide();
</script>
以上的事件是没有效果的;
可以通过两种方式改变:
1.把click事件封装在一个方法里,在产生标签后调用。
<script>
function bindItems(){
$('#tree .items').on('click', function(e) {
console.log(e);
e.stopPropagation();
if($(e.target).find('ul').is(':visible')) {
$(e.target).find('ul').hide();
} else {
$(e.target).find('ul').show();
}
$(e.target).siblings().find('ul').hide();
});
}
function creatHtml(data) {
var length = data.length;
var htms = '<ul>'
for(var i = 0; i < length; i++) {
if(data[i].children && data[i].children.length > 0) {
htms += '<li class="items" >' + data[i].name;
htms += creatHtml(data[i].children);
} else {
htms += '<li>' + data[i].name;
}
htms += '</li>';
}
htms += '</ul>';
return htms;
}
$('#tree').html(creatHtml(arr));
//在生成标签的后面调用此方法。
bindItems();
$('.items').find('ul').hide();
</script>
2.on()
//未来元素添加点击事件
$('#tree').on('click', '.items', function(e) {
e.stopPropagation();
if($(e.target).find('ul').is(':visible')) {
$(e.target).find('ul').hide();
} else {
$(e.target).find('ul').show();
}
$(e.target).siblings().find('ul').hide();
});
js--未来元素的更多相关文章
- jQuery on() 方法 为选定已存在元素和未来元素绑定标准事件和自定义事件
很有必要说说jQuery的on方法,这个方法存在大乾坤大奥秘,主要注意两点: 1.为已存在元素和未来元素(动态添加元素)绑定处理函数. 2.自定义一个非标准的事件并绑定处理函数. 定义和用法 on() ...
- 使用jquery.mCustomScrollbar自定义滚动条(4)live使用,向未来元素添加滚动条,不实用,了解一下
.div_box元素是本来没有的,在滚动条初始化的时候方法是加在$('.content .div_box').mCustomScrollbar()上面,参数live:on; 点击按钮的时候,进行con ...
- jquery添加未来元素时,其绑定事件不起作用解决办法
delegate说起对未来元素是其作用的,于是写下代码: <!DOCTYPE HTML> <html> <head> <meta charset=" ...
- js_实现给未来元素添加事件。
未来元素:不是一个页面上的元素,是通过js或者通过后台直接渲染在页面上的元素,也就是说这些元素不是直接写在document中的. 1.对于未来元素,我们想直接用js或者jq操作它们是不起作用的. $( ...
- jquery 未来元素事件示例 on() delegate() live()
jquery 1.7版后建议使用on() $(document).on("click","#green",function(){$(this).after('& ...
- paip.调试js 查看元素事件以及事件断点
paip.调试js 查看元素事件以及事件断点 ff 26 +firebug 查看不出来.. 360 ,虽然也是chrome 基础,但是开发工具烂阿,也是显示不出来.. 作者Attilax 艾龙, ...
- jQuery 中 on 方法-----给未来元素添加事件
<li class='clear dir-li'> <div class='left title'> 添加到目录:</div> <div class='lef ...
- JS子元素oumouseover触发父元素onmouseout
原文:JS子元素oumouseover触发父元素onmouseout JavaScript中,父元素包含子元素: 当父级设置onmouseover及onmouseout时,鼠标从父级移入子级,则触发父 ...
- 【全面总结】js获取元素位置大小
[js获取元素位置+元素大小]全面总结 目录 1.关于offset offsetParent(只读) offsetTop(只读) offsetLeft(只读) offsetHeight(只读) off ...
- js获取元素位置和style的兼容性写法
今天说一下js获取元素位置和style的方法.当然不只是element.style那么简单.. 主角:getBoundingClientRect,getClientRects,getComputedS ...
随机推荐
- Oracle中序列(Sequence)详解
一 序列定义 序列(SEQUENCE)是序列号生成器,可以为表中的行自动生成序列号,产生一组等间隔的数值(类型为数字).不占用磁盘空间,占用内存. 其主要用途是生成表的主键值,可以在插入语句中引用,也 ...
- springboot activiti 配置项详解
asyncExecutorEnabled属性设置设置true后将代替那些老的Job executorspring.activiti.async-executor-enabled=false sprin ...
- Vue + webpack 项目配置化、接口请求统一管理
准备工作 需求由来: 当项目越来越大的时候提高项目运行编译速度.压缩代码体积.项目维护.bug修复......等等成为不得不考虑而且不得不做的问题. 又或者后面其他同事接手你的模块,或者改你的bug ...
- Socket 初识 用Socket建立一个简易Web服务器
摘自<Asp.Net 本质论>作者:郝冠军 //在.Net中.system.Net命名空间提供了网络编程的大多数数据据类型以及常用操作,其中常用的类型如下: /* IPAddress 类表 ...
- Python购物车
product_list = [ ['Iphone',5888], ['Mac Air',8000], ['XiaoMi',19.9], ['coffee',30], ['Tesla',820000] ...
- from…import 语句
- hashlib 库
hashlib 库 hash 是一种算法,用来接收一系列数据,经过计算后得到一个hash值 hash值的三大特征: 1. 如果传入的数据一样,得到的hash值一样 2. 只要采用的hash算法固定,无 ...
- Win10系列:JavaScript 项目模板中的文件和项模板文件
通过上面内容的学习,相信读者已经对各种项目模板和项模板有了大致的了解,本节将进一步介绍项目模板中默认包含的项目文件以及项模板文件,首先讲解这些文件中的初始内容以及作用,然后介绍在一个页面中如何添加控件 ...
- Android 平台架构
Android 平台主要组件如下 Linux 内核 Android 平台的基础是 Linux 内核.例如,Android Runtime (ART) 依靠 Linux 内核来执行底层功能,例如线程和低 ...
- spring boot 打jar包
想必大家经常会出现以下报错信息 java.util.concurrent.ExecutionException: org.apache.catalina.LifecycleException: Fai ...