我们知道删除一个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节点时候索引出错问题的更多相关文章

  1. angular.js ng-repeat动态插入删除dom节点

    既然上面提到 angular.js 下无需用户直接操作dom ,而是在编译间断 dom 与 控制层model 实现了双向绑定,一方做出改变,另一方就会立即改变,那问题来了,我想插入一个文本框和按钮,并 ...

  2. angular.js 动态插入删除dom节点

    angular.js 是新一代web开发框架,它轻松在web前端实现了MVC模式,相比 jquery 模式,这种新玩意竟然不需要开发者直接去操作dom . 作为前端开发而不去操作dom ,这简直是一个 ...

  3. jQuery删除DOM节点

    jQuery删除DOM节点 <%@ page language="java" import="java.util.*" pageEncoding=&quo ...

  4. 原生js操作Dom节点:CRUD

    知识点,依然会遗忘.我在思考到底是什么原因.想到研究生考试准备的那段岁月,想到知识体系的建立,知识体系分为正向知识体系和逆向知识体系:正向知识体系可以理解为教科书目录,逆向知识体系可以理解考试真题. ...

  5. 原生JS获取DOM 节点到浏览器顶部的距离或者左侧的距离

    关于js获取dom 节点到浏览器顶/左部的距离,Jquery里面有封装好的offset().top/offset().left,只到父级的顶/左部距离position().top/position() ...

  6. js的DOM节点操作:创建 ,插入,删除,复制,查找节点

    DOM含义:DOM是文档对象模型(Document Object Model,是基于浏览器编程的一套API接口,是W3C出台的推荐标准.其赋予了JS操作节点的能力.当网页被加载时,浏览器就会创建页面的 ...

  7. JS 操作Dom节点之CURD

    许多优秀的Javascript库,已经封装好了丰富的Dom操作函数,这可以加快项目开发效率.但是对于非常注重网页性能的项目来说,使用Dom的原生操作方法还是必要的. 1. 查找节点 document. ...

  8. js中DOM 节点的一些操作方法

    什么是DOM DOM:文档对象模型.DOM 为文档提供了结构化表示,并定义了如何通过脚本来访问文档结构.目的其实就是为了能让js操作html元素而制定的一个规范. DOM就是由节点组成的. 解析过程 ...

  9. 原生JS的DOM节点操作

    DOM(Document Object Model/文档对象模型)是针对HTML和XML文档的一个API.DOM节点树:在文档中出现的空格.回车.标签.注释.文本.doctype.标签等都属于DOM节 ...

随机推荐

  1. Java学习——Applet菜单

    程序功能:在窗口中添加菜单栏,在菜单栏添加菜单项,并添加下拉菜单和 2 级菜单,通过选择菜单项可以执行不同操作,生成如下图所示窗口. package cys; import java.awt.*; i ...

  2. folly无锁队列正确性说明

    folly无锁队列是facebook开源的一个无所队列,使用的是单向链表,通过compare_exchange语句实现的多生产多消费的队列,我曾经花了比较多的时间学习memory_order的说明,对 ...

  3. keras LSTM学习实例

    1. 购物时间预测 http://www.cnblogs.com/arkenstone/p/5794063.html https://github.com/CasiaFan/time_seires_p ...

  4. 集合之map详解(遍历)

    13.简单介绍Map 12.Map排序(TreeMap的key排序,TreeMap的value排序:HashMap的value排序:) 11.map集合的6种遍历方式  ============= 2 ...

  5. 加入域的计算机重定向到指定的OU

    在我曾经呆过一个企业里,我们使用的是AD环境,计算机加入域时,我们需要使用一个单独的加域工具,里面有需要将计算机加入到指定OU的选项.所以每次加域我们都需要找个这个工具,实现加域过程.最后我发现其实最 ...

  6. 安装 dubbo

    Dubbo的介绍: 是一个java版的RPC框架,由阿里巴巴开发并使用,结合zookeeper,实现流动计算架构完成资源调度和治理的工作 dubbo管控台可以对注册到zookeeper注册中心的服务或 ...

  7. 【Linux】【Tomcat】Tomcat的安装和配置等

    安装环境 :Linux(Ubuntu 版) 安装软件 : apache-tomcat-9.0.0.M1.tar.gz(下载地址http://tomcat.apache.org/) 步骤一 Tomcat ...

  8. 【Git+Docker】Docker初期学习认识和安装配置详解

    Docker: 特性: 1.以应用为中心 2.自动化构建 3.版本控制 4.组件重用 5.镜像共享 6.工具生态系统 具体后续学习 优势: 1.文件系统隔离 2.进程隔离 3.网络隔离 4.资源隔离和 ...

  9. Warning: 执行完毕, 但带有警告 trigger trigger_EqPic_insert 已编译。

    create or replace trigger trigger_EqPic_insert before insert on TB_EqPic for each row declare begin ...

  10. uva-10887-枚举

    题意:集合S1和S2,把S2中的元素拼接到S1的后面去,生成新的元素,问有多少个不重复的元素 直接map.注意,不能用cin读取字符串,题目没有保证字符串中间没有空格 #include "p ...