十年网站开发经验 + 多家企业客户 + 靠谱的建站团队
量身定制 + 运营维护+专业推广+无忧售后,网站问题一站解决
append:在元素内部的最后面添加元素,作为子元素,如:
土默特右旗网站建设公司创新互联,土默特右旗网站设计制作,有大型网站制作公司丰富经验。已为土默特右旗上1000+提供企业网站建设服务。企业网站搭建\外贸网站制作要多少钱,请找那个售后服务好的土默特右旗做网站的公司定做!
通过jquery代码$("div").append("p我是通过append添加的/p");
得到的结果是
prepend:在元素内部的最前面添加元素,作为子元素,如:
通过jquery代码$("div").prepend("p我是通过prepend添加的/p");
得到的结果是
before:在元素的前边,作为兄弟元素添加,如
通过jquery代码 $(".base").before("div我是在前边添加的兄弟节点/div");
得到的结果是
after:在元素的后边,作为兄弟元素添加,如
通过jquery代码 $(".base").after("div我是在后边添加的兄弟节点/div");得到的结果是
一、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;
};
});
问题分析:
首先复述一下你的需求:在页面加载完毕后,将页面中#skin下的img标签进行修改,将其alt属性的值复制一份到其title属性。并在其后面追加h4标签,h4标签的内容为alt属性的值。
解决步骤:
通过使用jQuery的each方法遍历多个img标签。
1、获取alt属性的值。
2、通过jQuery的attr方法将获取的alt属性的值赋值给title属性。
3、通过jQuery的after方法将h4标签追加到img的后面。
举例如下:
HTML代码:
div id="skin"
img src="felix.jpg" alt="felix"
img src="felix.jpg" alt="felix"
img src="felix.jpg" alt="felix"
/div
jQuery代码:
$.each($('#skin img'), function() {
var alt = $(this).attr('alt');
$(this).attr('title', alt).after('h4' + alt + '/h4');
});
页面运行后的HTML代码:
总结:从以上代码截图可以看出,在页面运行后,img标签中多了title属性,以及后面被追加了h4标签,title属性以及h4标签的值与alt属性完全相等。
append 没有empty的属性啊。。。。 html(),才是把里面的内容清空替换成你的内容。append 是在被选元素里面的最后插入内容。after是被选元素后插入内容。 一个是里面的后面插(append) 一个是外面的后面插(after)。如果你非要清空那你直接empty()后在after就可以了
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不知道要把新元素放到哪里去,反而会导致要相关的原 有元素丢失。