jQuery 操作
一、内部插入
| 名称 | 说明 | 举例 |
|---|---|---|
| append() | 向每个匹配元素里面的末尾处插入DOM | 匹配元素在前 $('target').append($('<p>glee</p>')); |
| appendTo() | 同上 | 匹配元素在后 $('<p>glee</p>').appendTo('target'); |
| prepend() | 向每个匹配元素头部插入DOM | 匹配元素在前 $('target').prepend('<p>Glee</p>'); |
| prependTo() | 同上 | 匹配元素在后 $('<p>Glee</p>').prependTo($('target')); |
| html() | 获取匹配元素的DOM节点或文本节点 | |
| text() | 获取匹配元素的文本节点 |
append()
appendTo()
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>内部插入 append() appendTo()</title>
<script src="http://apps.bdimg.com/libs/jquery/1.9.1/jquery.min.js"></script>
<style type="text/css">
*{margin:0;padding:0;}
body{margin:30px;}
</style>
</head>
<body>
<h2>if you want me</h2>
<div id="container">
<div>玫瑰</div>
<div>玫瑰</div>
</div>
<script>
//创建节点
//var newElement = $('<div>1:创建div标签</div>');
//插入创建的标签
//$('body').append(newElement);
//字符串创建元素
//$('body').append('<div>2:字符串创建一个节点</div>');
/***
.append()函数将特定内容插入到每个匹配元素里面的最后面,作为它的最后一个子元素(last child),
(如果要作为第一个子元素 (first child), 用.prepend()).
.append() 和.appendTo()实现同样的功能。主要的不同是语法——内容和目标的位置不同。
对于.append(), 选择器表达式在函数的前面,参数是将要插入的内容。
对于.appendTo()刚好相反,内容在方法前面,无论是一个选择器表达式或创建作为标记上的标记,它都将被插入到目标容器的末尾。
***/
//在每个匹配元素里面的末尾处插入参数内容。
//$('.inner').append($('<p>glee</p>'));
//被选中的h2元素插入到另一个地方,是移动不是复杂
//$('#container').append($('h2'));
/***
效果:
<div id="container">
<div>玫瑰
<p>glee</p>
</div>
<div>
玫瑰
<p>glee</p>
</div>
<h2>if you want me</h2>
</div>
****/
//appendTo()与append()效果一样,语法不同
$('<p>glee</p>').appendTo('.inner');
$('h2').appendTo('#container');
</script>
</body>
</html>prepend()
prependTo()
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>内部插入 prepend() ,prependTo()</title>
<script src="http://apps.bdimg.com/libs/jquery/1.9.1/jquery.min.js"></script>
<style type="text/css">
*{margin:0;padding:0;}
body{margin:30px;}
</style>
</head>
<body>
<h2>if you want me</h2>
<div id="container">
<div>Rose</div>
<div>Rose</div>
</div>
<script>
//将参数内容插入到每个匹配元素的前面(元素内部)
$('.inner').prepend($('<p>Glee</p>'));
//插入文字
//$('.inner').prepend('Glee');
//移动h2标签
$('#container').prepend($('h2'));
/***
效果如下
<div id="container">
<h2>if you want me</h2>
<div>
<p>Glee</p>
Rose
</div>
<div>
<p>Glee</p>
Rose
</div>
</div>
***/
//prepenTo()语法不同
//$('<p>Glee</p>').prependTo($('.inner'));
//$($('h2')).prependTo($('#container'));
</script>
</body>
</html>html()
text()
<!doctype html>
<html>
<head>
<meta charset="utf-8">
<title>html() text()</title>
<script src="http://apps.bdimg.com/libs/jquery/1.9.1/jquery.min.js"></script>
<style>
*{margin:0;padding:0;}
</style>
</head>
<body>
<p>To the world
<span>you may be one person</span>
but to onc person
you may be the world
<em>对世界而言,你是一个人。</em>
但对某人而言,你是他的整个世界。
2018 04 14</p>
<script>
//text()方法如果没有参数,会获得到匹配元素的文本节点,如果有参数,会修改匹配元素的文本节点
//alert($('p').text());
//$('p').text('新的文本节点');
//如果匹配标签内有子元素,用html()才可以获得到匹配元素里面的所有的内容
//alert($('p').html());
//$('p').html('<span style="background:yellow;">If you want me</span>如果我想你');
newdiv = document.createElement('div');//新建div标签
$('body').prepend(newdiv);//插入新建div标签
$('div').html($('p').text());//1:text()方法读取p标签内文本.2:html()方法把文本插入div
</script>
</body>
</html>二、外部插入
| 名称 | 说明 | 举例 |
|---|---|---|
| after() | 在匹配元素之后插入DOM | 匹配元素在前 $('target').after('<p>glee</p>'); |
| insertAfter() | 同上 | 匹配元素在前 $('<p>glee</p>').insertAfter($('target')); |
| before() | 在匹配元素之前插入DOM | 匹配元素在前 $('target').before($('<p>rose</p>')); |
| inserBefore() | 同上 | 匹配元素在后 $($('<p>Glee</p>')).insertBefore('target'); |
after()
insertAfter()
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>外部插入 after() ,insertAfter()</title>
<script src="http://apps.bdimg.com/libs/jquery/1.9.1/jquery.min.js"></script>
<style type="text/css">
*{margin:0;padding:0;}
body{margin:30px;}
</style>
</head>
<body>
<div id="container">
<h2>if you want me</h2>
<div>玫瑰</div>
<div>玫瑰</div>
</div>
<script>
//在匹配元素集合中的每个元素后面插入参数所指定的内容,作为其兄弟节点。
//$('.inner').after('<p>glee</p>');
//移动到#container外作为兄弟元素
//$('#container').after($('h2'));
/***
//效果
<div id="container">
<div>玫瑰</div>
<p>glee</p>
<div>玫瑰</div>
<p>glee</p>
</div>
<h2>if you want me</h2>
***/
//insertAfter
$('<p>glee</p>').insertAfter($('.inner'));
$('h2').insertAfter($('#container'));
</script>
</body>
</html>before()
insertBefor()
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>外部插入 before() ,insertBefor()</title>
<script src="http://apps.bdimg.com/libs/jquery/1.9.1/jquery.min.js"></script>
<style type="text/css">
*{margin:0;padding:0;}
body{margin:30px;}
</style>
</head>
<body>
<div id="container">
<h2>if you want me</h2>
<div>玫瑰</div>
<div>玫瑰</div>
</div>
<script>
/***
.before()和.insertBefore()实现同样的功能。主要的不同是语法——内容和目标的位置不同。
对于.before()要插入的内容来自方法的参数:$(target).before(contentToBeInserted)(即,选择器表达式在方法的前面,参数是将要插入的内容) 。
对于.insertBefore()刚好相反,内容在方法前面并且插入到目标的前面,
而目标是传递给.insertBefore()方法的参数:$(contentToBeInserted).insertBefore(target)。
***/
//根据参数设定,在匹配元素的前面插入内容
//$('.inner').before($('<p>rose</p>'));
//移动
//$('#container').before($('h2'));
/***
//效果
<h2>if you want me</h2>
<div id="container">
<p>rose</p>
<div>玫瑰</div>
<p>rose</p>
<div>玫瑰</div>
</div>
***/
//insertBefore()
$($('<p>Glee</p>')).insertBefore('.inner');
$($('h2')).insertBefore('#container');
</script>
</body>
</html>三、包裹
| 名称 | 说明 | 举例 |
|---|---|---|
| wrap() | 将所有匹配元素单独包裹 | |
| wrapAll() | 将所有匹配元素用一个元素包裹 | |
| wrapInner() | 将所有匹配的元素的子内容用其它标签包裹 |
code
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>包裹</title>
<script src="http://apps.bdimg.com/libs/jquery/1.9.1/jquery.min.js"></script>
<style type="text/css">
*{margin:0;padding:0;}
body{margin:30px;}
div{border:1px solid red;margin:10px;}
#container ,#containerAll ,#containerInner{margin:20px;padding:10px;border:1px solid ghostwhite;float:left;}
p{padding:10px;margin:10px;background:yellow;}
</style>
</head>
<body>
<h4>黄色是目标p元素,橙色是插入包裹的元素</h4>
<!-- wrap() -->
<div id="container">wrap()
<p>gelan</p>
<p>rose</p>
</div>
<!-- wrapAll() -->
<div id="containerAll">wrapAll()
<p>gelan</p>
<p>rose</p>
</div>
<!-- wrapInner() -->
<div id="containerInner">wrapInner()
<p>gelan</p>
<p>rose</p>
</div>
<script>
//wrap()
//将所有匹配元素单独包裹
$('.inner').wrap('<div></div');
/***
//warp()效果
<div id="container">wrap()
<div><p>gelan</p></div>
<div><p>rose</p></div>
</div>
***/
//将所有匹配元素用一个元素包裹
$('.innerAll').wrapAll('<div></div');
/***
//warpAll()效果
<div id="containerAll">wrapAll()
<div>
<p>gelan</p>
<p>rose</p>
</div>
</div>
***/
//wrapInner()将所有匹配的元素的子内容用其它标签包裹
$('.innerInner').wrapInner('<span style="border:1px solid red;display:block;padding:10px;"></span>');
/***
效果
<div id="containerInner">wrapInner()
<p><span style="border:1px solid red;display:block;padding:10px;">gelan</span></p>
<p><span style="border:1px solid red;display:block;padding:10px;">rose</span></p>
</div>
***/
/***
注意:
当通过一个选择器字符串传递给.wrapInner(),
其参数应该是格式正确的HTML标签应该是被正确关闭的
如下:
$('.inner').wrapInner("<div />");
$('.inner').wrapInner("<div></div>");
$('.inner').wrapInner("<div class=\"test\"></div>");
***/
</script>
</body>
</html>四、克隆(拷贝)节点
| 名称 | 说明 | 举例 |
|---|---|---|
| clone() | 创建一个匹配的元素集合的深度拷贝副本 | //var elem = $('b').clone();//拷贝元素 //elem.prependTo('p');//插入拷贝的元素 $("b").clone().prependTo("p");//合成一行 |
clone(bool)克隆节点
01
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>clone(bool)</title>
<script src="http://apps.bdimg.com/libs/jquery/1.9.1/jquery.min.js"></script>
<style>
body{padding:100px;}
a{width: 20%;background:ghostwhite;border:1px solid orange;padding: 5px;margin:50px;}
</style>
</head>
<body>
<a href="###" id="con">Gelan</a>
<script>
/***
//01 给a标签添加一个点击事件
$('a').click(function(){
alert($(this).html());
});
//02 克隆a标签
var newA = $('a').clone();
//03 把克隆插入body
$('body').append(newA);
//我们克隆的a标签照道理说,应该有点击事件,但是点击克隆的a标签没有点击事情
//原因是它只克隆的节点,没克隆点击事件
//点击事件写克隆前面了,所以没有
//解决方法如下:
***/
/***
//02 克隆a标签
var newA = $('a').clone();
//03 把克隆插入body
$('body').append(newA);
//01 给a标签添加一个点击事件
$('a').click(function(){
alert($(this).html());
});
//接上面,把点击事件写后面
//这是顺序的问题,放到后面确实是可以的
//如果我们就是放在前面,改怎么办呢?
//解决方法如下:
***/
//接上面,我们把a标签点击事件克隆过来呢?
//我们给clone(true)写一个true.
//01 给a标签添加一个点击事件
$('a').click(function(){
alert($(this).html());
});
//02 克隆a标签
var newA = $('a').clone(true);
//03 把克隆插入body
$('body').append(newA);
</script>
</body>
</html>02
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>clone()</title>
<script src="http://apps.bdimg.com/libs/jquery/1.9.1/jquery.min.js"></script>
<style>
body{padding:100px;}
a{width: 20%;background:ghostwhite;border:1px solid orange;padding: 5px;margin:50px;}
</style>
</head>
<body>
<b>To the world,you may be one perpson.</b>
<p>but to one perpson,you may be the world.</p>
<script>
//最基本的代码:
//第一步克隆,
//第二部把克隆写入DOM
//var elem = $('b').clone();
//elem.prependTo('p');
$("b").clone().prependTo("p");
</script>
</body>
</html>03
<!DOCTYPE html>
<html>
<head>
<title>clone()</title>
<script src="http://apps.bdimg.com/libs/jquery/1.9.1/jquery.min.js"></script>
<style>
#orig, #copy, #copy-correct{
width: 20%;
background:ghostwhite;
border:1px solid orange;
padding: 5px;
margin:20px;
}
</style>
</head>
<body>
<div id="orig">#orig
<div class="elem"><a>1</a></div>
<div class="elem"><a>2</a></div>
<div class="elem"><a>3</a></div>
<div class="elem"><a>4</a></div>
<div class="elem"><a>5</a></div>
</div>
<div id="copy">#copy</div>
<div id="copy-correct"></div>
<script>
//最基本的代码:
//第一步克隆,
//第二部把克隆写入DOM
//var elem = $('.elem').clone();
//$('#copy').append($('.elem'));
/*
//example 01:
//原始代码
$('#copy').append($('#orig .elem')
.clone()
.children('a')
.prepend('foo - ')
.parent()
.clone());
*/
//链式操作比较多
//分解这个实例:
//第一步:克隆
var orig = $('#orig .elem')
.clone()//克隆
.children('a')//找到子元素a标签
.prepend('foo - ')//给a标签插入"foo-"
.parent();//回到父元素,如果没有这一步,克隆的是子元素a标签
//.clone()最后这个方法省略,貌似也可以。
//第二部:把克隆的内容写入#copy
$('#copy').append(orig);
//example 02:
//与上一个例子基本一样
$('#copy-correct')
.append($('#orig .elem')
.clone()
.children('a')
.prepend('bar - ')
.end());
//本来想了解基本的克隆方法就往下进行,花了一些时间,耐心研究这个实例,对jquery链式操作的应用收获
//实例来源:http://www.css88.com/jqapi-1.9/clone/
</script>
</body>
</html>五、删除节点(DOM移除)
| 名称 | 说明 | 举例 |
|---|---|---|
| remove() | 删除节点 | $('target').remove(); |
| empyt() | 清空节点 | $('target').empyt(); |
| unwrap() | 删除元素的父元素 | $('target').unwrap(); |
| detach() | 删除节点,但保留jquery对象 | $('target').detach(); |
| 替换节点(DOM 替换) | ||
remove()删除节点
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>remove()删除节点</title>
<script src="http://apps.bdimg.com/libs/jquery/1.9.1/jquery.min.js"></script>
<style type="text/css">
*{margin:0;padding:0;}
body{margin:30px;}
div,p{border:1px solid orange;background:ghostwhite;margin:10px;padding: 10px;}
</style>
</head>
<body>
<div id="container">
<p>gelan</p>
<p>glee</p>
</div>
<button id="button">remove()方法删除.gelan</button>
<button>remove()方法删除div,及子元素,及文本</button>
<script>
//remove()删除节点
$('#button').click(function(){
$('.gelan').remove();
});
$('.button').click(function(){
$('div').remove();
});
//detach()
//功能与remove()一样
//手册解释:
//.detach()方法和.remove()一样,
//除了.detach()保存所有jQuery数据和被移走的元素相关联。
//当需要移走一个元素,不久又将该元素插入DOM时,这种方法很有用。
</script>
</body>
</html>detach()
<!DOCTYPE html>
<html>
<head>
<title>detach()</title>
<style>
p{background:yellow;width:100px;height:100px;float:left;margin:20px;color:red;}
p.off{background:orange;color: #fff;}
</style>
<script src="http://apps.bdimg.com/libs/jquery/1.9.1/jquery.min.js"></script>
</head>
<body>
<P>对于世界而言,你是一个人</P>
<p>对于某个人,你是他的整个世界</p>
<button>Attach/detach paragraphs</button>
<script>
$("p").click(function(){
$(this).toggleClass("off");
});
var p;
$("button").click(function(){
//alert(p);
if (p){
p.appendTo("body");
p = null;
}else{
p = $("p").detach();
}
});
/***
代码解释:
1:给p标签添加事件
2:给button添加事件
a:刷新页面后p标签是jquery对象,删除p标签
b:p标签为空,插入p标签
重点:detach()与remove()基本功能一样
区别是:
remove()方法删除jquery对象后,对象赋予的事件也没有了
detach()方法删除对象后,对象事件还在
手册解释:
.detach()方法和.remove()一样,
除了.detach()保存所有jQuery数据和被移走的元素相关联。
当需要移走一个元素,不久又将该元素插入DOM时,这种方法很有用。
***/
</script>
</body>
</html>empty()清空节点
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>empty()清空节点</title>
<script src="http://apps.bdimg.com/libs/jquery/1.9.1/jquery.min.js"></script>
<style type="text/css">
*{margin:0;padding:0;}
body{margin:30px;}
div,p{border:1px solid orange;background:ghostwhite;margin:10px;padding: 10px;}
</style>
</head>
<body>
<div id="container">
<p>gelan</p>
<p>glee</p>
</div>
<button id="button">清空.gelan内文本</button>
<button>移除#container内子元素(和其他后代元素)</button>
<script>
//这个方法不仅移除子元素(和其他后代元素),同样移除元素里的文本。
//empty()清空节点
$('#button').click(function(){
$('.gelan').empty();
});
$('.button').click(function(){
$('#container').empty();
});
</script>
</body>
</html>unwrap()删除元素的父元素
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>unwrap()删除元素的父元素</title>
<script src="http://apps.bdimg.com/libs/jquery/1.9.1/jquery.min.js"></script>
<style type="text/css">
*{margin:0;padding:0;}
body{margin:30px;}
div,p{border:1px solid orange;background:ghostwhite;margin:10px;padding: 10px;}
</style>
</head>
<body>
<div id="container">
<p>gelan</p>
<p>glee</p>
</div>
<button id="button">wrap/unwrap</button>
<script>
//.unwrap()删除元素的父级元素和.wrap()的功能相反。
//匹配的元素(以及他们的兄弟元素,如果有的话)取代他们的父母在DOM结构。
//unwrap()删除元素的父元素
$('#button').click(function(){
if($('p').parent().is('#container')){
$('p').unwrap();
}else{
$('p').wrap('<div id="container"/>');
}
});
</script>
</body>
</html>六、替换节点(DOM替换)
| 名称 | 说明 | 举例 |
|---|---|---|
| replaceWith() | 将所有匹配的元素替换成指定的HTML或DOM元素 | $('target').replaceWith('<h2>LiLi</h2>'); |
| replaceAll() | 用指定的元素替换掉所有选择到匹配的元素 | $('<h2>LiLi</h2>').replaceAll('tarset'); |
替换
<!DOCTYPE html>
<html>
<head>
<title>替换</title>
<script src="http://apps.bdimg.com/libs/jquery/1.9.1/jquery.min.js"></script>
<style>
body{padding:100px;}
div, p{width: 20%;background:ghostwhite;border:1px solid orange;padding:5px;margin-bottom:20px;margin-top:20px;}
</style>
</head>
<body>
<div class="container">
<div class="inner first">gelan</div>
<div class="inner second">glee</div>
<div class="inner third">rose</div>
</div>
<button>点击</button>
<div class="wrap">
<p class="inner first">01 gelan</p>
<p class="inner second">02 glee</p>
<p class="inner third">03 rose</p>
</div>
<a>点击</a>
<script>
//.third替换成h2
$("button").click(function(){
$('div.third').replaceWith('<h2>LiLi</h2>');
//replaceAll()与replaceWith()功能一样,区别:目标和源相反
//$('<h2>LiLi</h2>').replaceAll('div.third');
});
//通俗的说就是把03换成01(01是移动)
$("a").click(function(){
$('p.third').replaceWith($('p.first'));
//replaceAll()与replaceWith()功能一样,区别:目标和源相反
//$('p.first').replaceAll('p.third');
});
</script>
</body>
</html>
Leave a comment
0 Comments.
