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 相关文章推荐
ExtJS GridPanel 根据条件改变字体颜色
Mar 08 Javascript
分享一个我自己写的ToolTip提示插件(附源码)
Jan 20 Javascript
jquery ajax同步异步的执行最终解决方案
Apr 26 Javascript
JS合并数组的几种方法及优劣比较
Sep 19 Javascript
详解JavaScript对象和数组
Dec 03 Javascript
探究JavaScript中的五种事件处理程序方式
Dec 07 Javascript
javascript使用递归算法求两个数字组合功能示例
Jan 03 Javascript
JavaScript实现预览本地上传图片功能完整示例
Mar 08 Javascript
layui prompt 设置允许空白提交的方法
Sep 24 Javascript
jquery实现轮播图特效
Apr 12 jQuery
使用Element的InfiniteScroll 无限滚动组件报错的解决
Jul 27 Javascript
linux服务器快速卸载安装node环境(简单上手)
Feb 22 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中截取字符串支持utf-8
2007/01/18 PHP
php 大数据量及海量数据处理算法总结
2011/05/07 PHP
php判断ip黑名单程序代码实例
2014/02/24 PHP
qq登录,新浪微博登录接口申请过程中遇到的问题
2014/07/22 PHP
php验证码生成代码
2015/11/11 PHP
自定义min版smarty模板引擎MinSmarty.class.php文件及用法
2016/05/20 PHP
PHP实现的DES加密解密封装类完整实例
2017/04/29 PHP
Laravel 5.4.36中session没有保存成功问题的解决
2018/02/19 PHP
PHP中md5()函数的用法讲解
2019/03/30 PHP
基于jquery的图片的切换(以数字的形式)
2011/02/14 Javascript
Javascript实现的类似Google的Div拖动效果代码
2011/08/09 Javascript
用jquery实现点击栏目背景色改变
2012/12/10 Javascript
vue 组件高级用法实例详解
2018/04/11 Javascript
vue组件实现进度条效果
2018/06/06 Javascript
Vue开发之watch监听数组、对象、变量操作分析
2019/04/25 Javascript
vue跳转页面的几种方法(推荐)
2020/03/26 Javascript
Python获取网页上图片下载地址的方法
2015/03/11 Python
修改Python的pyxmpp2中的主循环使其提高性能
2015/04/24 Python
高效使用Python字典的清单
2018/04/04 Python
ubuntu系统下使用pm2设置nodejs开机自启动的方法
2018/05/12 NodeJs
好的Python培训机构应该具备哪些条件
2018/05/23 Python
Python实现正则表达式匹配任意的邮箱方法
2018/12/20 Python
ubuntu上安装python的实例方法
2019/09/30 Python
Python之Class&amp;Object用法详解
2019/12/25 Python
TensorFlow 显存使用机制详解
2020/02/03 Python
5分钟让你掌握css3阴影、倒影、渐变小技巧(小编推荐)
2016/08/15 HTML / CSS
什么是lambda函数
2013/09/17 面试题
医学专业个人求职自荐信格式
2013/09/23 职场文书
店长岗位职责
2013/11/21 职场文书
大学毕业生的自我鉴定
2013/11/30 职场文书
母亲节演讲稿范文
2014/01/02 职场文书
给领导的致歉信范文
2014/01/13 职场文书
学校实习推荐信
2015/03/27 职场文书
2015人事行政工作总结范文
2015/05/21 职场文书
离婚案件被告代理词
2015/05/23 职场文书
MySQL分区路径子分区再分区
2022/04/13 MySQL