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_12_执行模型浅析
Oct 18 Javascript
图片在浏览器中底部对齐 解决方法之一
Nov 30 Javascript
javascript设计模式之中介者模式Mediator
Dec 30 Javascript
javascript创建动态表单的方法
Jul 25 Javascript
js实现的后台左侧管理菜单代码
Sep 11 Javascript
javascript伸缩菜单栏实现代码分享
Nov 12 Javascript
AngularJs bootstrap详解及示例代码
Sep 01 Javascript
jQuery.Validate表单验证插件的使用示例详解
Jan 04 Javascript
vue元素实现动画过渡效果
Jul 01 Javascript
JS原型与继承操作示例
May 09 Javascript
JS/jQuery实现超简单的Table表格添加,删除行功能示例
Jul 31 jQuery
如何用JS实现网页瀑布流布局
Apr 24 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
php读取数据库信息的几种方法
2008/05/24 PHP
PHP set_time_limit(0)长连接的实现分析
2010/03/02 PHP
php 去除html标记--strip_tags与htmlspecialchars的区别详解
2013/06/26 PHP
分析php://output和php://stdout的区别
2018/05/06 PHP
PHP实现 APP端微信支付功能
2018/06/22 PHP
jquery.cookie.js 操作cookie实现记住密码功能的实现代码
2011/04/27 Javascript
jQuery拖拽div实现思路
2014/02/19 Javascript
js实现带圆角的两级导航菜单效果代码
2015/08/24 Javascript
JS实现1000以内被3或5整除的数字之和
2016/02/18 Javascript
jQuery阻止移动端遮罩层后页面滚动
2017/03/15 Javascript
js 发布订阅模式的实例讲解
2017/09/10 Javascript
ReactNative实现Toast的示例
2017/12/31 Javascript
nodejs中函数的调用实例详解
2018/10/31 NodeJs
JS+canvas五子棋人机对战实现步骤详解
2020/06/04 Javascript
跟老齐学Python之关于类的初步认识
2014/10/11 Python
Python中装饰器的一个妙用
2015/02/08 Python
举例讲解Python中is和id的用法
2015/04/03 Python
在Python中使用lambda高效操作列表的教程
2015/04/24 Python
Python抽象类的新写法
2015/06/18 Python
Python 实现简单的电话本功能
2015/08/09 Python
基于python爬虫数据处理(详解)
2017/06/10 Python
python实现公司年会抽奖程序
2019/01/22 Python
树莓派实现移动拍照
2019/06/22 Python
keras .h5转移动端的.tflite文件实现方式
2020/05/25 Python
使用SimpleITK读取和保存NIfTI/DICOM文件实例
2020/07/01 Python
Python性能测试工具Locust安装及使用
2020/12/01 Python
Perfume’s Club意大利官网:欧洲美妆电商
2019/05/03 全球购物
什么叫应用程序域?什么是受管制的代码?什么是强类型系统?什么是装箱和拆箱?
2016/08/13 面试题
Linux如何压缩可执行文件
2013/10/21 面试题
市三好学生主要事迹
2014/01/28 职场文书
护士毕业生自荐信
2014/02/07 职场文书
咖啡店创业计划书范文
2014/09/15 职场文书
财务人员个人工作总结
2015/02/27 职场文书
工商行政处罚决定书
2015/06/24 职场文书
Redis之RedisTemplate配置方式(序列和反序列化)
2022/03/13 Redis
Python日志模块logging用法
2022/06/05 Python