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 Cursor用法总结
cursor分为三种,一是直接声明为cursor变量,二是首先声明类型再声明变量,三是声明为sys_refcursor. (1)直接声明 declare cursor emp_cur is sele ...
- button中文字垂直居中
给文字设置line-height,等于button高度.
- ActiveMQ 配置jdbc主从
使用 jdbc 方式配置主从模式,持久化消息存放在数据库中. 在同一时刻,只有一个 master broker,master 接受客户端的连接,slave 不接受连接.当 master 因为关机而下线 ...
- ActiveMQ broker解析
在 ActiveMQ 中,broker 集中管理持久的.临时的 queue 和 topic. public class BrokerFilter implements Broker { // 省略其他 ...
- [转]关于ReentrantLock中线程读某个变量是否需要加锁
我在使用ReentrantLock类对变量进行多线程累加时,调用了lock()和unlock()方法,但读取该变量时我未加锁,结果是能正确执行,代码如下: public class Main { pr ...
- js之querySelector方法
querySelector()接受一个CSS选择符,返回匹配的第一个元素,反之则NULL. 如: var body = document.querySelector('body'); var mydi ...
- vbox 虚拟机添加usb
先装扩展包. vbox 所在的用户组比如要包括当前用户才行. 查看当前用户名:sharl@sharl-laptop:~$ whoamisharl 查看vbox 所在的组:sharl@sharl-lap ...
- AI工具(矩形工具)(椭圆工具的操作与矩形类似)(剪切蒙版)5.11
矩形工具:按住SHIFT键,可以绘制一个正方形. 按住ALT键,可以绘制以落点为中心的矩形. 同时按住SHIFT和ALT键可以绘制以鼠标落点为中心的正方形. 选择矩形工具,点击页面,输入高宽,精确绘制 ...
- C++解析二
C++ 类访问修饰符 数据封装是面向对象编程的一个重要特点,它防止函数直接访问类类型的内部成员.类成员的访问限制是通过在类主体内部对各个区域标记 public.private.protected 来指 ...
- 跨域 jsonp 和 CORS 资料
http://mp.weixin.qq.com/s/iAShnqvsOyV-Xd0Ft7Nl2Q HTML5安全:CORS(跨域资源共享)简介...ie67不要想了... http://www.cnb ...