最近工作比较多 Jq 原理 也做到操作DOM阶段  JS还是不熟悉 理解的比较多 所以 才更新出博客

然后自己写了基本这个几个DOM 实现了一个 剩下的基本就很快 都是一套流程  注释和分解都写在代码里

写一篇开始写JQ操作属性的方法实现原理

   appendTo:function(str){//转成成核心对象 不然 还要对各种类型转换var tem =$(str);//谁负责调用 this就是谁 这里是把P加到DIV中 this 是P//$('p').appendTo('div');var $this = this;var array=[];NjQuery.each(tem,function(index,value){//如果 P标签是多个 还需要二层循环$this.each(function(k,v){// 判断是否是第一个DIV元素if(index==0){value.appendChild(v);array.push(v);}else{// 因为P标签只有一个 所以剪切后  第一个DIV就会失去P 被增减到第二个DIV//所以在第二个DIV开始拷贝P标签 增加到DIV中//true 会拷贝标签和所有内容  false 就会拷贝标签var tmp=  v.cloneNode(true);value.appendChild(tmp);array.push(tmp);}  })})//返回对象return  $(array);//  //循环所有的DIV标签//  for (let index = 0; index < tem.length; index++) {//     //如果 P标签是多个 还需要二层循环//         for (let j = 0; j < $this.length; j++) {//         // 判断是否是第一个DIV元素//         if(index==0){//             tem[index].appendChild($this[j]);//         }else//         {//         // 因为P标签只有一个 所以剪切后  第一个DIV就会失去P 被增减到第二个DIV//         //所以在第二个DIV开始拷贝P标签 增加到DIV中//         //true 会拷贝标签和所有内容  false 就会拷贝标签//         var tmp=  $this[j].cloneNode(true);//         tem[index].appendChild(tmp);//         }//     }// }},prependTo:function(str){//转成成核心对象 不然 还要对各种类型转换var tem =$(str);//谁负责调用 this就是谁 这里是把P加到DIV中 this 是P//$('p').appendTo('div');var $this = this;var array=[];NjQuery.each(tem,function(index,value){//如果 P标签是多个 还需要二层循环$this.each(function(k,v){// 判断是否是第一个DIV元素if(index==0){// value.appendChild(v);/*     document.insertBefore(v,document.firstChild) */// 把P放到div下的第一个元素前面value.insertBefore(v,value.firstChild)array.push(v);}else{// 因为P标签只有一个 所以剪切后  第一个DIV就会失去P 被增减到第二个DIV//所以在第二个DIV开始拷贝P标签 增加到DIV中//true 会拷贝标签和所有内容  false 就会拷贝标签var tmp=  v.cloneNode(true);value.insertBefore(tmp,value.firstChild)// value.appendChild(tmp);array.push(tmp);}  })})//返回对象return  $(array);},append:function(str){if(NjQuery.isString(str)){//this 是一个集合 所以要用this [0]// console.log(this);// console.log(this[0]);this.each(function(index,value){value.innerHTML+=str;})}else{// this.appendTo(str);//需要把str转换成对象 才能调用appendTo$(str).appendTo(this);}return this;},prepend:function(str){if(NjQuery.isString(str)){this.each(function(index,value){value.innerHTML =str + value.innerHTML;})//this 是一个集合 所以要用this [0]// console.log(this);// console.log(this[0]);}else{// this.appendTo(str);//需要把str转换成对象 才能调用appendTo$(str).prependTo(this);}return this;},JInsertBefore:function(str){//转成成核心对象 不然 还要对各种类型转换var tem =$(str);//谁负责调用 this就是谁 这里是把P加到DIV中 this 是P//$('p').appendTo('div');var $this = this;var array=[];NjQuery.each(tem,function(index,value){var par = value.parentNode;//如果 P标签是多个 还需要二层循环$this.each(function(k,v){// 判断是否是第一个DIV元素if(index==0){// value.appendChild(v);/*     document.insertBefore(v,document.firstChild) */// 把P放到div下的第一个元素前面par.insertBefore(v,value)array.push(v);}else{// 因为P标签只有一个 所以剪切后  第一个DIV就会失去P 被增减到第二个DIV//所以在第二个DIV开始拷贝P标签 增加到DIV中//true 会拷贝标签和所有内容  false 就会拷贝标签var tmp=  v.cloneNode(true);par.insertBefore(tmp,value)// value.appendChild(tmp);array.push(tmp);}  })})//返回对象return  $(array);},before:function (str){var tem =$(str);// log()var $this=this;if(NjQuery.isString(str)){  //1)把P增加都每一个DIV的前面this.each(function(index,value){// div[0].parentNode.insertBefore(textNode, div[0])var par = value.parentNode; var textNode = document.createTextNode(str)//父节点下的增加textNode节点 在DIV前面par.insertBefore(textNode,value)})}else{$(str).JInsertBefore(this);}return this;},JReplaceAll:function(str){//转成成核心对象 不然 还要对各种类型转换var tem =$(str);if(tem.length==0){return;}//谁负责调用 this就是谁 这里是把P加到DIV中 this 是P//$('p').appendTo('div');var $this = this;var array=[];NjQuery.each(tem,function(index,value){//如果 P标签是多个 还需要二层循环$this.each(function(k,v){// 判断是否是第一个DIV元素if(index==0){$(v).JInsertBefore(value);$(value).remove();array.push(v);}else{// 因为P标签只有一个 所以剪切后  第一个DIV就会失去P 被增减到第二个DIV//所以在第二个DIV开始拷贝P标签 增加到DIV中//true 会拷贝标签和所有内容  false 就会拷贝标签var tmp=  v.cloneNode(true);$(tmp).JInsertBefore(value);$(value).remove();// value.appendChild(tmp);array.push(tmp);}  })})//返回对象return  $(array);},JInsertAfter:function(str){//转换成标签var tmp=$(str);var $this=this;var $array=[];$.each(tmp,function(index,value){var $par = value.parentNode;var $next = value.nextSibling;$this.each(function(i,v){if(index==0){$par.insertBefore(v, $next);$array.push(v);}else{ var tmp=  v.cloneNode(true);$par.insertBefore(tmp, $next);$array.push(tmp);}})})return  $array;// function insertAfter(p,div)// {//     // document.nextSibling//     //DIV循环//        for (let index = 0; index < div.length; index++) {//         var par=  div[index].parentNode;//         var $last= div[index].nextSibling//         for (let i = 0; i < p.length; i++) {//             if(index==0)//              {//                 par.insertBefore(p[i], $last)//             }else//             {//                var tmp=  p[i].cloneNode(true);//                par.insertBefore(tmp, $last)//             }//         }//         // var textNode = document.createTextNode(p)//         //   div[index].parentNode.appendChild(textNode);//         // div[0].parentNode.insertBefore(textNode, div[0])//    }//   }//   var   $P=document.querySelectorAll("P");//   var Div=document.querySelectorAll("div");//   insertAfter( $P,Div)},after:function(str){var $this = this;if(NjQuery.isString(str)){$this.each(function(index,value){var par=  value.parentNode;var $last= value.nextSibling  var textNode = document.createTextNode(str)par.insertBefore(textNode, $last)})}else{$(str).JInsertAfter($this);}//1 首先调用参数位置不同// function after(p,div)// {//     // document.nextSibling//     //DIV循环//        for (let index = 0; index < div.length; index++) {//         var par=  div[index].parentNode;//         var $last= div[index].nextSibling//         // for (let i = 0; i < p.length; i++) {//         //     if(index==0)//         //      {//                var textNode = document.createTextNode(p)//                 par.insertBefore(textNode, $last)//             // }else//             // {//             //    var tmp=  p[i].cloneNode(true);//             //    par.insertBefore(tmp, $last)//             // }//         // }//         // var textNode = document.createTextNode(p)//         //   div[index].parentNode.appendChild(textNode);//         // div[0].parentNode.insertBefore(textNode, div[0])//    }//   }//   var   $P='p';//   var Div=document.querySelectorAll("div");//   after( $P,Div)}

JQuery18(JQ原理 DOM元素 appendTo append prepend prependTo InsertBefore Before JReplaceAll)相关推荐

  1. php中append,插入节点append()、insertAfter()的特殊用法:对原有DOM元素进行移动

    插入节点的方法: append()/appendTo().prepend()/prependTo().after()/insertAfter().before/insertBefore() 这些插入节 ...

  2. jq添加或删除html元素,jQuery添加删除DOM元素方法详解

    本文实例分析了jQuery添加删除DOM元素的方法.分享给大家供大家参考,具体如下: 介绍 DOM是Document Object Modeule的缩写,一般来说,DOM操作分成3个方面. 1.DOM ...

  3. append,appendTo和prepend

    1.append(content) 向每个匹配的元素内部追加内容. 1 <div>2 <p name="p1">p1</p>3 </div ...

  4. jQuery的append、appendTo、prepend、prependTo

    元素1.append(元素2):把元素2添加到元素1内部最后 元素2.appendTo(元素1):把元素2添加到元素1内部最后 元素1.prepend(元素2):把元素2添加到元素1内部最前 元素2. ...

  5. jq在html中添加dom元素,使用jQuery添加DOM元素的最佳方法

    所以我已经看到了三种向页面添加html/DOM元素的方法.我很好奇他们每个人的利弊是什么. 1 - 传统的JavaScript 我相信直接的JS方法是通过构造每个元素,设置属性,然后附加它们.例: v ...

  6. 2021-12-23 睡前故事--jQuery-添加元素之append、prepend、after、before的区别

    jQuery-添加元素之append.prepend.after.before的区别 小萝卜儿灵魂画师

  7. html 广告 ins 原理,如何通过HTML DOM元素显示AdSense广告

    我使用下面提到的代码来创建HTML DOM div元素312,并且我想通过调用javascript创建dom元素来在其他页面上显示名为312的div内的adsense广告.它适用于其他广告,但不适用于 ...

  8. jQuery操作DOM元素案例

    直接打开注释即可观察效果,都已经测试通过!!! <!DOCTYPE html> <html><head><meta charset="UTF-8&q ...

  9. jQuery操作Dom元素、jQuery遍历、JavaScript遍历

    目录 jQuery操作Dom元素 jQuery遍历几种方式 JavaScript遍历 jQuery操作Dom元素 jQuery的主要用法为"选择某个dom元素,再对其进行某种操作" ...

最新文章

  1. datatable自动增加序号
  2. JCheckBox 默认选择_[注册表] 将Windows 10默认应用程序设置页面添加到桌面右键菜单中...
  3. ElasticSearch 5.5 离线环境的完整安装及配置详情,附kibana、ik插件配置及安装包下载路径...
  4. 数据中心成投资新宠 今年或再创历史纪录
  5. 一行代码让matplotlib图表变高大上
  6. OSPF DR选举的先后
  7. 自定义控件android.r,Android控件架构与自定义控件
  8. Qt编写自定义控件15-百分比仪表盘
  9. 计算机应用基础三次没有通过怎么办,计算机应用基础第三次作业
  10. PIPIOJ1166PIPI的棋盘
  11. 计算机与模拟实验的论文,作业模拟论文,关于森林作业的计算机模拟相关参考文献资料-免费论文范文...
  12. 信息系统项目管理师2018年上半年下午案例分析题及答案
  13. 互联网快讯:永辉拟打造数字化零售;猿辅导,掌门教育积极布局素质教育
  14. 亿道丨三防平板丨加固平板丨三防工业平板丨航空航天应用
  15. 同主机容器基于XDP的连通性实验
  16. Android 抛弃原生WebView,使用腾讯X5内核、并加入广告拦截。
  17. 解决no matching host key type found. Their offer: ssh-rsa报错信息具体方法
  18. the+比较级,the+比较级
  19. H.266/VVC技术学习之帧内模式编码
  20. aaa服务器显示认证失败,华为aaa认证案例-电信华为机顶盒50%通路故障或AAA认证失败怎么回...

热门文章

  1. java实用教程第五版电子书,爱了爱了
  2. Sklearn-preprocessing.scale/StandardScaler/MinMaxScaler
  3. node-red教程 8.2 node-red收发邮件(基于QQ邮箱)
  4. 什么是BeautifulSoup
  5. VM启动centos出现Assuming drive cache: write through.../run/initramfs/rdsosreport.txt类似错误解决方案
  6. 误发邮件如何能撤回?
  7. Mysql常见面试题(陆续更新中)...
  8. html5分镜头脚本范例,分镜头脚本教程图解
  9. nose-report
  10. linux三维动画软件,Blender2.9免费版下载