jquery 追加元素append、prepend、before、after用法与区别分析


Posted in Javascript onDecember 02, 2016

一、after()和before()方法的区别

    after()——其方法是将方法里面的参数添加到jquery对象后面去;
    如:A.after(B)的意思是将B放到A后面去;
    before()——其方法是将方法里面的参数添加到jquery对象前面去。
    如:A.before(B)的意思是将A放到B前面去; 
 
二、insertAfter()和insertBefore()的方法的区别

    其实是将元素对调位置;
    可以是页面上已有元素;也可以是动态添加进来的元素。
    如:A.insertAfter(B);即将A元素调换到B元素后面;
    如<span>CC</span><p>HELLO</p>使用$("span").insertAfter($("p"))后,就变为<p>HELLO</p><span>CC</span>了。两者位置调换了
 
三、append()和appendTo()方法的区别

    append()——其方法是将方法里面的参数添加到jquery对象中来;
    如:A.append(B)的意思是将B放到A中来,后面追加,A的子元素的最后一个位置;
    appendTo()——其方法是将jquery对象添加到appendTo指定的参数中去。
    如:A.appendTo(B)的意思是将A放到B中去,后面追加,B的子元素的最后一个位置;
 
四、prepend()和prependTo()方法的区别

    append()——其方法是将方法里面的参数添加到jquery对象中来;
    如:A.append(B)的意思是将B放到A中来,插入到A的子元素的第一个位置;
    appendTo()——其方法是将jquery对象添加到appendTo指定的参数中去。
    如:A.appendTo(B)的意思是将A放到B中去,插入到B的子元素的第一个位置;
 
例子

1、insert局部方法

/**
 * 在父级元素上操作DOM
 * @param {Object} parent  父级元素,可以是element,也可以是Yquery对象
 * @param {String} position 位置: beforebegin/afterbegin/beforeend/afterend
 * @param {*}   any   任何:string/text/object
 * @param {Number} index  序号,如果大于0则复制节点
 * @return {Undefined}
 * @version 1.0
 * 2013年12月2日17:08:26
 */
function _insert(parent, position, any, index) {
  if ($.isFunction(any)) {
    any = any.call(parent);
  }
  // 字符串
  if ($.isString(any)) {
    if (regTag.test(any)) {
      parent.insertAdjacentHTML(position, any);
    } else {
      parent.insertAdjacentText(position, any);
    }
  }
  // 数字
  else if ($.isNumber(any)) {
    parent.insertAdjacentText(position, any);
  }
  // 元素
  else if ($.isElement(any)) {
    parent.insertAdjacentElement(position, index > 0 ? any.cloneNode(!0) : any);
  }
  // Yquery
  else if (_isYquery(any)) {
    any.each(function() {
      _insert(parent, position, this);
    });
  }
}

2、append、prepend、before、after

$.fn = {
  /**
   * 追插
   * 将元素后插到当前元素(集合)内
   * @param {String/Element/Function} any
   * @return this
   * @version 1.0
   * 2013年12月29日1:44:15
   */
  append: function(any) {
    return this.each(function(index) {
      _insert(this, 'beforeend', any, index);
    });
  },
  /**
   * 补插
   * 将元素前插到当前元素(集合)内
   * @param {String/Element/Function} any
   * @return this
   * @version 1.0
   * 2013年12月29日1:44:15
   */
  prepend: function(any) {
    return this.each(function(index) {
      _insert(this, 'afterbegin', any, index);
    });
  },
  /**
   * 前插
   * 将元素前插到当前元素(集合)前
   * @param {String/Element/Function} any
   * @return this
   * @version 1.0
   * 2013年12月29日1:44:15
   */
  before: function(any) {
    return this.each(function(index) {
      _insert(this, 'beforebegin', any, index);
    });
  },
  /**
   * 后插
   * 将元素后插到当前元素(集合)后
   * @param {String/Element/Function} any
   * @return this
   * @version 1.0
   * 2013年12月29日1:44:15
   */
  after: function(any) {
    return this.each(function(index) {
      _insert(this, 'afterend', any, index);
    });
  }
};

3、prependTo、prependTo、insertBefore、insertAfter
这些带后缀的与上面的不同的是,返回的结果不一样。如:

$('#demo').append('<a/>');
// => 返回的是 $('#demo')
$('<a/>').appendTo($('#demo'));
// => 返回的是$('a');

因此两者的关系只是返回结果不一样,其他的都一样,可以这么解决:

_each({
  appendTo: 'append',
  prependTo: 'prepend',
  insertBefore: 'before',
  insertAfter: 'after'
}, function(key, val) {
  $.fn[key] = function(selector) {
    this.each(function() {
      $(selector)[val](this);
    });
    return this;
  };
});

jquery 追加元素的方法(append prepend after before 的区别)

append() 方法在被选元素的结尾插入内容。

prepend() 方法在被选元素的开头插入内容。

after() 方法在被选元素之后插入内容。

before() 方法在被选元素之前插入内容。

<script type="text/javascript" src="http://common.3water.com/jslib/jquery/jquery.min.js"></script>
<div class="testdiv">
  <ul>
    <li>第一个li标签</li>
  </ul>
</div>

<script>

  //append
  $('.testdiv ul').append('<li>append 插入的li</li>');
  //prepend
  $('.testdiv ul').prepend('<li>prepend 插入的li</li>');
  //after
  $('.testdiv ul').after('<li>after 插入的li</li>');
  //before
  $('.testdiv ul').before('<li>before 插入的li</li>');

</script>

效果图

jquery 追加元素append、prepend、before、after用法与区别分析

html结构图

jquery 追加元素append、prepend、before、after用法与区别分析

Javascript 相关文章推荐
JavaScript delete操作符应用实例
Jan 13 Javascript
IE6与IE7中,innerHTML获取param的区别
Mar 15 Javascript
基于jquery可配置循环左右滚动例子
Sep 09 Javascript
jquery改变disabled的boolean状态的三种方法
Dec 13 Javascript
jQuery实现区域打印功能代码详解
Jun 17 Javascript
Vue.js 中的 $watch使用方法
May 25 Javascript
js处理包含中文的字符串实例
Oct 11 Javascript
JavaScript数据结构与算法之队列原理与用法实例详解
Nov 22 Javascript
如何解决vue2.0下IE浏览器白屏问题
Sep 13 Javascript
Vue的data、computed、watch源码浅谈
Apr 04 Javascript
解决vue-router路由拦截造成死循环问题
Aug 05 Javascript
浅谈TypeScript 索引签名的理解
Oct 16 Javascript
jquery实现图片列表鼠标移入微动
Dec 01 #Javascript
Vue.js组件tabs实现选项卡切换效果
Dec 01 #Javascript
IE8兼容Jquery.validate.js的问题
Dec 01 #Javascript
利用JQuery阻止事件冒泡
Dec 01 #Javascript
Vue.js第三天学习笔记(计算属性computed)
Dec 01 #Javascript
实例解析jQuery中如何取消后续执行内容
Dec 01 #Javascript
一个非常好用的文字滚动的案例,鼠标悬浮可暂停[两种方案任选]
Dec 01 #Javascript
You might like
Laravel 5.4.36中session没有保存成功问题的解决
2018/02/19 PHP
一些有关检查数据的JS代码
2006/09/07 Javascript
网页中实现浏览器的最大,最小化和关闭按钮
2007/03/12 Javascript
Jquery 点击按钮显示和隐藏层的代码
2011/07/25 Javascript
javascript实现的一个随机点名功能
2014/08/26 Javascript
jquery实现初次打开有动画效果的网页TAB切换代码
2015/09/06 Javascript
AngularJS使用ngMessages进行表单验证
2015/12/27 Javascript
快速解决js动态改变dom元素属性后页面及时渲染的问题
2016/07/06 Javascript
ES6新数据结构Map功能与用法示例
2017/03/31 Javascript
基于JavaScript实现的快速排序算法分析
2017/04/14 Javascript
浅谈Node.js CVE-2017-14849 漏洞分析(详细步骤)
2017/11/10 Javascript
浅谈vue-cli加载不到dev-server.js的解决办法
2017/11/24 Javascript
vue2.0 和 animate.css的结合使用
2017/12/12 Javascript
基于vue-simplemde实现图片拖拽、粘贴功能
2018/04/12 Javascript
详解js模板引擎art template数组渲染的方法
2018/10/09 Javascript
js实现弹出框的拖拽效果实例代码详解
2019/04/16 Javascript
node.js基于socket.io快速实现一个实时通讯应用
2019/04/23 Javascript
layui自定义验证,用ajax查询后台是否有重复数据,form.verify的例子
2019/09/06 Javascript
JS实现密码框效果
2020/09/10 Javascript
[01:29:42]Liquid vs VP Supermajor决赛 BO 第一场 6.10
2018/07/05 DOTA
分析并输出Python代码依赖的库的实现代码
2015/08/09 Python
使用Python解析JSON数据的基本方法
2015/10/15 Python
python数字图像处理实现直方图与均衡化
2018/05/04 Python
python3射线法判断点是否在多边形内
2019/06/28 Python
python matplotlib.pyplot.plot()参数用法
2020/04/14 Python
15个Pythonic的代码示例(值得收藏)
2020/10/29 Python
Python使用Pygame绘制时钟
2020/11/29 Python
html5清空画布方法(三种)
2017/10/16 HTML / CSS
工程采购员岗位职责
2014/03/09 职场文书
党校培训自我鉴定范文
2014/04/10 职场文书
个人合作协议书范本
2014/04/18 职场文书
金融系应届毕业生求职信
2014/05/26 职场文书
2014年宣传部个人工作总结
2014/12/06 职场文书
2016银行求职自荐信
2016/01/28 职场文书
七年级作文之雪景
2019/11/18 职场文书
nginx限制并发连接请求数的方法
2021/04/01 Servers