js删除dom节点时候索引出错问题
我们知道删除一个dom节点的时候索引就会发生了改变,甚至是错误,就算jq的ecah也无能为力,所以我们只能自己写个功能了
直接上代码把,不多说
<!DOCTYPE html> <html> <head> <title>fancyBox - Fancy jQuery Lightbox Alternative | Demonstration</title> <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
<!-- Add jQuery library --> <script type="text/javascript" src="../lib/jquery-1.10.1.min.js"></script>
<!-- Add mousewheel plugin (this is optional) --> <!-- <script type="text/javascript" src="../lib/jquery.mousewheel-3.0.6.pack.js"></script> --> <!-- Add fancyBox main JS and CSS files --> <script type="text/javascript" src="../source/jquery.fancybox.js?v=2.1.5"></script> <link rel="stylesheet" type="text/css" href="../source/jquery.fancybox.css?v=2.1.5" media="screen" />
<!-- Add Button helper (this is optional) --> <link rel="stylesheet" type="text/css" href="../source/helpers/jquery.fancybox-buttons.css?v=1.0.5" /> <!-- <script type="text/javascript" src="../source/helpers/jquery.fancybox-buttons.js?v=1.0.5"></script> --> <!-- Add Thumbnail helper (this is optional) --> <link rel="stylesheet" type="text/css" href="../source/helpers/jquery.fancybox-thumbs.css?v=1.0.7" /> <!-- <script type="text/javascript" src="../source/helpers/jquery.fancybox-thumbs.js?v=1.0.7"></script> --> <!-- Add Media helper (this is optional) --> <!-- <script type="text/javascript" src="../source/helpers/jquery.fancybox-media.js?v=1.0.6"></script> --> </head> <style> *{ margin:0; padding:0;} li{ list-style:none;} #div{ margin:20px; height:auto; width:auto; overflow:hidden; } #div div { height:30px; width:30px; overflow:hidden; position:absolute; right:0px; top:0px; z-index:9; } #div .closs { position:absolute; left:-4px; top:-2px; } #ul1{ height:auto; width:auto; overflow:hidden; background:#ccc; } #div li{ position:relative; height:100px; width:100px; float:left; margin:5px; } #div li > img{ height:100px; width:100px; position:absolute; left:0px; top:0px; } #div li span{ position:absolute; left:0px; top:0px; opacity:0; filter:alpha(opacity=0); z-index:3; height:100px; width:100px; background:red; } #makImg{ display:none; } </style> <body> <input type="button" id="but" value="添加图片"/> <div id="div"> <!--ul li img --> <ul id="ul1"> <!-- <li> <div > <img class = "closs" src="../source/fancybox_sprite.png" /> </div> <img class="main" src="1_b.jpg" /> <span class='makClick'>1</span> </li> <li> <div > <img class = "closs" src="../source/fancybox_sprite.png" /> </div> <img class="main" src="1_b.jpg" /> <span class='makClick'> </span> </li> <li> <div > <img class = "closs" src="../source/fancybox_sprite.png" /> </div> <img class="main" src="1_b.jpg" /> <span class='makClick'> </span> </li> <li> <div > <img class = "closs" src="../source/fancybox_sprite.png" /> </div> <img class="main" src="1_b.jpg" /> <span class='makClick'> </span> </li>--> </ul> </div> <div id='makImg'> <!--<a class="fancybox-buttons" data-fancybox-group="button" href="1_b.jpg"><img src="1_s.jpg" alt="" /></a>
<a class="fancybox-buttons" data-fancybox-group="button" href="2_b.jpg"><img src="2_s.jpg" alt="" /></a>
<a class="fancybox-buttons" data-fancybox-group="button" href="3_b.jpg"><img src="3_s.jpg" alt="" /></a>
<a class="fancybox-buttons" data-fancybox-group="button" href="4_b.jpg"><img src="4_s.jpg" alt="" /></a>--> </div> <script> $(document).ready(function() { $(".fancybox-effects-a").fancybox({ helpers: { title : { type : 'outside' }, overlay : { speedOut : 0 } } }); }); var Odiv = document.getElementById('div'), Obut = document.getElementById('but'); function getByClass(o_parentId, class_name){ var obj_arr = [ ], obj_s = o_parentId.getElementsByTagName("*"); for(var i = 0 , len = obj_s.length; i < len; i++){ if(obj_s[i].className == class_name){ obj_arr.push(obj_s[i]); } } return obj_arr; } var evnet_index = { setIndex : function(obj_arr){ for(var i = 0, len = obj_arr.length; i < len ;i++ ){ obj_arr[i].index = i; } }, getIndex : function(o_parent, event_type, class_name , fn){ var target_obj = new Object( ); o_parent['on'+event_type]= function( e ){ var ev = e || window.event, target = ev.target || ev.srcElement; if(target.className == class_name){ fn && fn({obj : target , index : target.index}); } } } } var add_remove_child = { RemoveChild : function (obj,index){ var nwe_obj = obj[0]; nwe_obj.parentNode.removeChild(obj[index]); }, AddMaxImg : function(src){ var a_obj = document.createElement('a'); a_obj.className = "fancybox-effects-a"; a_obj["data-fancybox-group"] = 'button'; a_obj.href = src; var img_obj = document.createElement('img'); img_obj.src = src; a_obj.appendChild(img_obj); return a_obj; }, AddUl : function ( ){ if(Odiv.getElementsByTagName('ul').length>=1){ return Odiv.getElementsByTagName('ul')[0]; }else{ var Oul = document.createElement('ul'); Odiv.appendChild(Oul); return Oul; } }, AddChild : function (src){ var Oli = document.createElement('li'); Oli_div = document.createElement('div'); Oli.appendChild(Oli_div); var Oli_div_img = document.createElement('img'); Oli_div_img.className = 'closs'; Oli_div_img.src = '../source/fancybox_sprite.png'; Oli_div.appendChild(Oli_div_img); var Oli_img = document.createElement('img'); Oli_img.src = src; Oli.appendChild(Oli_img); var Oli_span = document.createElement('span'); Oli_span.style.zIndex = 3; Oli_span.className = 'makClick'; Oli.appendChild(Oli_span); return Oli; } }; var img_index = 0; Obut.onclick = function( ){ img_index = (img_index < 5)?(img_index+1):1; document.getElementById('makImg').appendChild(add_remove_child.AddMaxImg(img_index+'_b.jpg')); add_remove_child.AddUl( ).appendChild(add_remove_child.AddChild( img_index+'_b.jpg')); evnet_index.setIndex(getByClass(Odiv, 'makClick')); evnet_index.setIndex(getByClass(Odiv, 'closs')); } //事件所有的子对象只能绑定一个父对象,不能多个类的子对象绑定相同的父对象。 evnet_index.setIndex(getByClass(Odiv, 'makClick')); evnet_index.getIndex(document.getElementById('div'), 'click' ,'makClick' , function(obj){ ; alert(obj.index); $('.fancybox-effects-a').eq(obj.index).trigger('click'); }); //事件所有的子对象只能绑定一个父对象,不能多个类的子对象绑定相同的父对象。 evnet_index.setIndex(getByClass(Odiv, 'closs')); evnet_index.getIndex(document.getElementById('ul1'), 'click' ,'closs' , function(obj){ img_index--; add_remove_child.RemoveChild(document.getElementById('makImg').getElementsByTagName('a'),obj.index); add_remove_child.RemoveChild(document.getElementById('ul1').getElementsByTagName('li'),obj.index); evnet_index.setIndex(getByClass(Odiv, 'makClick')); evnet_index.setIndex(getByClass(Odiv, 'closs')); alert(obj.index); }); </script> </body> </html>
js删除dom节点时候索引出错问题的更多相关文章
- angular.js ng-repeat动态插入删除dom节点
既然上面提到 angular.js 下无需用户直接操作dom ,而是在编译间断 dom 与 控制层model 实现了双向绑定,一方做出改变,另一方就会立即改变,那问题来了,我想插入一个文本框和按钮,并 ...
- angular.js 动态插入删除dom节点
angular.js 是新一代web开发框架,它轻松在web前端实现了MVC模式,相比 jquery 模式,这种新玩意竟然不需要开发者直接去操作dom . 作为前端开发而不去操作dom ,这简直是一个 ...
- jQuery删除DOM节点
jQuery删除DOM节点 <%@ page language="java" import="java.util.*" pageEncoding=&quo ...
- 原生js操作Dom节点:CRUD
知识点,依然会遗忘.我在思考到底是什么原因.想到研究生考试准备的那段岁月,想到知识体系的建立,知识体系分为正向知识体系和逆向知识体系:正向知识体系可以理解为教科书目录,逆向知识体系可以理解考试真题. ...
- 原生JS获取DOM 节点到浏览器顶部的距离或者左侧的距离
关于js获取dom 节点到浏览器顶/左部的距离,Jquery里面有封装好的offset().top/offset().left,只到父级的顶/左部距离position().top/position() ...
- js的DOM节点操作:创建 ,插入,删除,复制,查找节点
DOM含义:DOM是文档对象模型(Document Object Model,是基于浏览器编程的一套API接口,是W3C出台的推荐标准.其赋予了JS操作节点的能力.当网页被加载时,浏览器就会创建页面的 ...
- JS 操作Dom节点之CURD
许多优秀的Javascript库,已经封装好了丰富的Dom操作函数,这可以加快项目开发效率.但是对于非常注重网页性能的项目来说,使用Dom的原生操作方法还是必要的. 1. 查找节点 document. ...
- js中DOM 节点的一些操作方法
什么是DOM DOM:文档对象模型.DOM 为文档提供了结构化表示,并定义了如何通过脚本来访问文档结构.目的其实就是为了能让js操作html元素而制定的一个规范. DOM就是由节点组成的. 解析过程 ...
- 原生JS的DOM节点操作
DOM(Document Object Model/文档对象模型)是针对HTML和XML文档的一个API.DOM节点树:在文档中出现的空格.回车.标签.注释.文本.doctype.标签等都属于DOM节 ...
随机推荐
- 配置Flink依赖的pom文件时报错:flink-clients_2.11 & flink-streaming-java_2.11
在配置eclipse上的pom文件时,在配置到flink-clients_2.11 和 flink-streaming-java_2.11这两个jar包的时候不管怎么弄都报错而且包一大堆错. 最难受的 ...
- java1.8新特性(三 关于 ::的用法)
java1.8 推出了一种::的语法 用法 身边 基本没人用1.8的新API 目前 我也是只处于学习 运用 阶段 有点 知其然不知其所以然 通过后面的学习,及时查漏补缺 一个类中 有 静态方法 ,非静 ...
- opengl 无法定位程序输入点_glutInitWithExit于动态链接库glut32.dll上
1.问题:opengl 无法定位程序输入点_glutInitWithExit于动态链接库glut32.dll上 2.环境:vc6.0 win7,64位,opengl. 3.解决:将glut32.dl ...
- tcpdump命令(转载)
https://www.cnblogs.com/ggjucheng/archive/2012/01/14/2322659.html 简介 用简单的话来定义tcpdump,就是:dump the tra ...
- 【 MAKEFILE 编程基础之二】MAKEFILE 书写规划以及语法规则!
本站文章均为 李华明Himi 原创,转载务必在明显处注明: 转载自[黑米GameDev街区] 原文链接: http://www.himigame.com/gcc-makefile/768.html ...
- SAS 宏数据运算
74 /*计算两个日期之间间隔多少天:开始时间01DEC2005 结束日期:31JUL2018*/75 %LET N2='31JUL2018'D-'01DEC2005'D+1;76 %PUT & ...
- sas 批量处理缺少缺失值
DATA S.customer_grade; SET S.customer_grade; ARRAY NUM{*} _NUMERIC_; DO I=1 TO DIM(NUM); ...
- 转载-----BUFG,IBUFG,BUFGP,IBUFGDS等含义以及使用
目前,大型设计一般推荐使用同步时序电路.同步时序电路基于时钟触发沿设计,对时钟的周期.占空比.延时和抖动提出了更高的要求.为了满足同步时序设计的要求,一般在FPGA设计中采用全局时钟资源驱动设计的主时 ...
- oracle执行update时卡死问题的解决办法
原因: 由于在PLSQL Developer执行update时没有commit,oracle将该条记录锁住了. 可以通过以下办法解决: 先查询锁定记录 Sql代码 SELECT s.sid, s.se ...
- 如何在ubuntu系统里面用新加装的硬盘对系统进行扩容
我这里是用256G的固态硬盘安装了系统,想通过扩展1T的机械硬盘存储数据的,现在我们需要的就是把这个1T的硬盘进行扩容进去 使用df -h和sudo fdisk -l命令查看磁盘情况 切换到root用 ...