重庆分公司,新征程启航
为企业提供网站建设、域名注册、服务器等服务
一、after()和before()方法的区别
成都创新互联公司服务项目包括海州网站建设、海州网站制作、海州网页制作以及海州网络营销策划等。多年来,我们专注于互联网行业,利用自身积累的技术优势、行业经验、深度合作伙伴关系等,向广大中小型企业、政府机构等提供互联网行业的解决方案,海州网站推广取得了明显的社会效益与经济效益。目前,我们服务的客户以成都为中心已经辐射到海州省份的部分城市,未来相信会继续扩大服务区域并继续获得客户的支持与信任!
after()——其方法是将方法里面的参数添加到jquery对象后面去;
如:A.after(B)的意思是将B放到A后面去;
before()——其方法是将方法里面的参数添加到jquery对象前面去。
如:A.before(B)的意思是将A放到B前面去;
二、insertAfter()和insertBefore()的方法的区别
其实是将元素对调位置;
可以是页面上已有元素;也可以是动态添加进来的元素。
如:A.insertAfter(B);即将A元素调换到B元素后面;
如spanCC/spanpHELLO/p使用$("span").insertAfter($("p"))后,就变为pHELLO/pspanCC/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的dom操作方法中,包括了after与insertAfter,这两个方法名字相近,所实现的功能从名 字中不容易分辨,所以在经过试验后撰文一篇以加深记忆。
测试代码如下:
html
head
meta charset=”utf-8″
title 测试insertAfter与after的区别 /title
/head
body
ul
li class=”first”first/li
li class=”middle”middle/li
li class=”last”last/li
/ul
/body
/html
自然状态下显示是这样的:
添加脚本:$(‘.first’).insertAfter($(‘.last’));
则会把first移到last后面去,变成了这样:
如果把insertAfter方法换为after,效果则为:
从上述对比可以看出,其实这两个方法的差别就像主语跟宾语的差别一样,是主与从的问题。
after方法,是把参数元素移到调用方法的元素的后面,而insertAfter方法则恰恰相反,是把调用 方法的元素插入到参数元素的后面。
另外要注意的是,当要用这两个方法在dom树中添加新元素时,如
”linew/li”,这样的html字符串不能出现在after方法的调用主体或
insertAfter的参数中,因为这样一来,jquery不知道要把新元素放到哪里去,反而会导致要相关的原 有元素丢失。
append 没有empty的属性啊。。。。 html(),才是把里面的内容清空替换成你的内容。append 是在被选元素里面的最后插入内容。after是被选元素后插入内容。 一个是里面的后面插(append) 一个是外面的后面插(after)。如果你非要清空那你直接empty()后在after就可以了