基础DOM和CSS操作
DOM在JavaScript,它是一种文档对象模型。方便开发者对HTML结构元素内容进行展示和修改。在JavaScript中,DOM不但内容庞大繁杂,而且我们开发的过程中需要考虑更多的兼容性、扩展性。在jQuery中,已经将最常用的DOM操作方法进行了有效封装,并且不需要考虑浏览器的兼容性。
一.DOM几个基本概念:
1.D表示的是页面文档Document、O表示对象,即一组含有独立特性的数据集合、M表示模型,即页面上的元素节点和文本节点。
2.DOM有三种形式,标准DOM、HTML DOM、CSS DOM,大部分都进行了一系列的封装,在jQuery中并不需要深刻理解它。
3.树形结构用来表示DOM,就非常的贴切,大部分操作都是元素节点操作,还有少部分是文本节点操作。
二.设置元素及内容
通过前面所学习的各种选择器、过滤器来得到我们想要操作的元素。这个时候,我们就可以对这些元素进行DOM的操作。那么,最常用的操作就是对元素内容的获取和修改。
html()和text()方法
<body> <div id="box"> <strong>www.xixi.com</strong> </div> </body>
(1)html()获取元素中HTML内容
$(function () { alert($('#box').html()); //获取html内容输出:<strong>www.xixi.com</strong> });
(2)text()获取元素中文本内容
$(function () { alert($('#box').text()); //text获取的是文本,有html会自动被清理输出:www.xixi.com });
(3)html(value)设置元素中HTML内容
$(function () { $('#box').html('<em>www.xi.cc</em>'); //替换HTML内容,会HTML会自动解析输出:www.xi.cc });
(4)text(value)设置原生中文本内容
$(function () { $('#box').text('<em>www.li.cc</em>'); //替换文本内容,有HTML会自动转义输出:<em>www.li.cc</em> });
(5)val()获取表单中的文本内容
如果元素是表单的话,jQuery 提供了val()方法进行获取或设置内部的文本数据
<body> <input type="text" value="西西"/> </body>
获取表单内容西西
$(function () { alert($('input').val()); //输出:西西 });
设置表单内容为诗诗
$(function () { $('input').val('诗诗'); //输出:诗诗 });
如果想设置多个选项的选定状态,比如下拉列表、单选复选框等等,可以通过数组传递操作。
<body> <input type="radio" value="男" /> 男 <input type="radio" value="女" /> 女 <input type="checkbox" value="编程" /> 编程 </body>
把下拉菜单选框默认是选定状态
$(function () { $('input').val(['男','女','编程']); //value值是这些的将被选定 });
三.元素属性操作
除了对元素内容进行设置和获取,通过jQuery也可以对元素本身的属性进行操作,包括获取属性的属性值、设置属性的属性值,并且可以删除掉属性。
attr()和removeAttr()
<body> <div id="box"> <strong>www.xixi.com</strong> </div> </body>
(1)attr(key)获取某个元素key属性的属性值
$(function () { alert($('#box').attr('id')); //返回:box });
(2)attr(key,value)设置某个元素key属性的属性值
<body> <div id="box"> <strong>www.xixi.com</strong> </div> <div id="box"> <strong>www.xixi.com</strong> </div> </body>
给div里加上title="我是西西"
$(function () { $('div').attr('title','我是西西'); });
(3)attr({key1:value2,key2:value2...})设置某个元素多个key属性的属性值
给div里加上title="西西" class="red" data="123"
$(function () { $('div').attr({ 'title' : '西西', 'class' : 'red', //class不建议用attr来设置,后面有功能更强大和更丰富的方法代替 'data' : '123' }); });
(4)attr(key,function(index,value){})设置某个元素key通过fn来设置
<body> <div title="aaa"> <strong>www.xixi.com</strong> </div> <div id="box"> <strong>www.xixi.com</strong> </div> </body>
value得到原来的值,原来没有值的话value没用
$(function () { $('div').attr('title', function (index, value) { return '原来的title是:' + value + ',现在的title是:我是' + (index+1) + '号域名'; }); });
最后改变结果:
<div title="原来的title是:aaa,现在的title是:我是1号域名"> <strong>www.xixi.com</strong> </div> <div id="box" title="原来的title是:undefined,现在的title是:我是2号域名"> <strong>www.xixi.com</strong> </div>
注意:jQuery中很多方法都可以使用 function(){}来返回出字符串,比如 html()、text()、val()和is()、filter()方法。而如果又涉及到多个元素集合的话,还可以传递index参数来获取索引值,并且可以使用第二个参数value(并不是所有方法都适合,有兴趣可以自己逐个尝试)。
<body> <div title="aaa"> <strong>www.xixi.com</strong> </div> </body>
追加通过匿名函数赋值,并传递index
$(function () { $('div').html($('div').html() + '<em>www.xixi.com</em>'); //结果:www.xixi.com www.xixi.com });
还可以实现追加内容
$(function () { $('div').html(function (index, value) { return value + '<em>www.xixi.com</em>'; //www.xixi.com www.xixi.com }); });
注意:我们也可以使用attr()来创建id属性,但我们强烈不建议这么做。这样会导致整个页面结构的混乱。当然也可以创建class属性,但后面会有一个语义更好的方法来代替attr()方法,所以也不建议使用。
删除指定的属性,这个方法就不可以使用匿名函数,传递index和value均无效。
<body> <div title="aaa"> <strong>www.xixi.com</strong> </div> </body>
删除指定的属性title
$(function () { $('div').removeAttr('title'); //删除指定的属性title });
编译后的结果是(源代码不会被删除):
<div>
<strong>www.xixi.com</strong>
</div>
四.元素样式操作
元素样式操作包括了直接设置CSS样式、增加CSS类别、类别切换、删除类别这几种操作方法。而在整个jQuery使用频率上来看,CSS样式的操作也是极高的,所以需要重点掌握。
1.CSS操作方法
<body> <div title="aaa"> <strong>www.xixi.com</strong> </div> </body>
(1)css(name)获取某个元素行内的CSS样式
获取www.xixi.com样式的颜色
$(function () { alert($('div').css('color')); //rgb(0,0,0) });
(2)css([name1,name2,name3])获取某个元素行内多个CSS样式
在CSS获取上,我们也可以获取多个CSS样式,而获取到的是一个对象数组,如果用传统方式进行解析需要使用for in遍历。
获取某个元素行内多个CSS样式
方式一:
$(function () { var box = $('div').css(['color', 'width', 'height']); //得到多个CSS样式的数组对象 for (var i in box) { alert(i + ':' + box[i]); //逐个遍历出来分别输出:color:rgb(0,0,0) width:1166px height:18px } });
方式二:jQuery提供了一个遍历工具专门来处理这种对象数组,$.each()方法,这个方法可以轻松的遍历对象数组。
遍历原生态对象数组
$(function () { var box = $('div').css(['color', 'width', 'height']); $.each(box, function (attr, value) { alert(attr + ':' + value); //遍历JavaScript原生态的对象数组输出:color:rgb(0,0,0) width:1166px height:18px }); });
使用$.each()可以遍历原生的JavaScript对象数组,如果是jQuery对象的数组怎么使用.each()方法呢?
遍历jQuery对象数组
$(function () { var box = $('div').css(['color', 'width', 'height']); $('div').each(function (index, element) { alert(index + ':' + element); //结果:0:[object HTMLDivElement] }); });
(3)css(name,value)设置某个元素行内的CSS样式
把www.xixi.com设置为红色
$(function () { $('div').css('color','red'); });
(4)css(name,function (index, value))设置某个元素行内的CSS样式
如果想设置某个元素的CSS样式的值,需要计算可以传递一个匿名函数。
将全局的操作包装成局部操作给width原长度为1066减去300
$(function () { $('div').css('width', function (index, value) { //局部操作,很舒服 return parseInt(value) - 300 + 'px'; }) });
最后结果
<div style="width: 866px;">
<strong>www.xixi.com</strong>
</div>
(5)css({name1 : value1, name2 : value2})设置某个元素行内多个CSS样式
传递多个CSS样式的键值对方法
$(function () { //$('div').css('color','red').css('background-color','#ccc'); $('div').css({ 'color' : 'blue', 'background-color' : '#eee', 'width' : '200px', 'height' : '30px' }); });
index.html原页面:
<body> <div> <strong>www.xixi.com</strong> </div> </body>
style.css代码:
.red { color:red; } .bg { background-color:#ccc; } .size { font-size:20px; }
(6)addClass(class)给某个元素添加一个CSS类
直接引用style.css给div添加一个class="red"
$(function () { $('div').addClass('red'); //添加一个CSS类 });
添加结果:
<div class="red">
<strong>www.xixi.com</strong>
</div>
(7)addClass(class1 class2 class3...) 给某个元素添加多个 CSS 类
直接引用style.css给div添加多个class="red bg size"
$(function () { $('div').addClass('red bg size'); //添加多个CSS类 });
添加结果
<div class="red bg size">
<strong>www.xixi.com</strong>
</div>
(8)removeClass(class) 删除某个元素的一个CSS 类
直接引用style.css给div删除class里的bg
$(function () { $('div').addClass('red bg size'); //添加多个CSS类 $('div').removeClass('bg'); //删除一个CSS类 });
删除结果:
<div class="red size">
<strong>www.xixi.com</strong>
</div>
(9)removeClass(class1 class2 class3...)删除某个元素的多个CSS类
直接引用style.css给div删除class里的red和size
$(function () { $('div').addClass('red bg size'); //添加多个CSS类 $('div').removeClass('red size'); });
删除结果:
<div class="bg">
<strong>www.xixi.com</strong>
</div>
(10)toggleClass(class)来回切换默认样式和指定样式
点击www.xixi.com实现默认样式和指定样式的切换
$(function () { $('div').click(function () { $(this).toggleClass('red'); //两个样式之间的切换,默认样式和指定样式的切换 }); });
(11)toggleClass(class1 class2 class3...)多个样式来回切换默认样式和指定样式
点击www.xixi.com实现默认样式和指定样式的切换
$(function () { $('div').click(function () { $(this).toggleClass('red size'); //两个样式之间的切换,默认样式和指定样式的切换 }); });
(12)toggleClass(class, switch) 来回切换样式的时候设置切换频率
$(function () { var count = 0; $('div').click(function () { alert(''); $(this).toggleClass('red size', count++ % 2 == 0); //频率问题 }); });
(13)toggleClass(function () {}) 通过匿名函数设置切换的规则
默认的CSS类切换只能是无样式和指定样式之间的切换,如果想实现样式1和样式2之间的切换还必须自己写一些逻辑。
style.css代码:
.red { color:red; } .green { color:green; } .bg { background-color:#ccc; } .size { font-size:20px; }
实现指定样式绿红切换
$(function () { $('div').click(function () { //这里只是click的局部,而又是toggle的全局 $(this).toggleClass('red'); //一开始切换到样式2 if ($(this).hasClass('red')) { //判断样式2存在后 $(this).removeClass('green'); //删除样式1 } else { $(this).toggleClass('green'); //添加样式1,这里也可以addClass } }); });
另一种写法:
$(function () { $('div').click(function () { $(this).toggleClass(function () { //局部 if ($(this).hasClass('red')) { $(this).removeClass('red'); return 'green'; } else { $(this).removeClass('green'); return 'red'; } }); }); });
(14)toggleClass(function () {}, switch) 在匿名函数设置时也可以设置频率
$(function () { var count = 0; $('div').click(function () { $(this).toggleClass(function () { //局部 if ($(this).hasClass('red')) { $(this).removeClass('red'); return 'green'; } else { $(this).removeClass('green'); return 'red'; } }, count++ % 2 == 0); //出现问题 }); });
(15)toggleClass(function (i, c, s) {}, switch) 在匿名函数设置时传递三个参数
对于.toggleClass()传入匿名函数的方法,还可以传递 index 索引、class类两个参数以及频率布尔值,可以得到当前的索引、class 类名和频率布尔值。
$(function () { var count = 0; $(document).click(function () { $('div').toggleClass(function (index, className, switchBool) { alert(index + ':' + className + ':' + switchBool); //得到当前值 //局部 if ($(this).hasClass('red')) { $(this).removeClass('red'); return 'green'; } else { $(this).removeClass('green'); return 'red'; } }, count++ % 2 == 0); }); });
五.CSS方法
jQuery不但提供了CSS的核心操作方法,比如.css()、.addClass()等。还封装了一些特殊功能的CSS操作方法
1.长度width()方法:
<body> <div title="aaa"> <strong>www.xixi.com</strong> </div> </body>
(1)width()获取某个元素的长度
$(function () { alert($('div').width()); //1166 });
(2)width(value) 设置某个元素的长度
$(function () { $('div').width(500); //设置为500px });
(3)width(function (index, width) {})通过匿名函数设置某个元素的长度
$(function () { $('div').width(function (index, width) { return width - 500 + 'px'; //虽然可以不加,会智能添加,但还是建议加上单位,更加清晰。 }); });
2.高度height()方法:
<body> <div title="aaa"> <strong>www.xixi.com</strong> </div> </body>
(1)height()获取某个元素的长度
$(function () { alert($('div').height()); // 默认高度是18 });
(2)height(value)设置某个元素的长度
$(function () { $('div').height(500); //设置元素高度,直接传数值,默认加 px });
(3)height(function (index, width) {})通过匿名函数设置某个元素的长度
$(function () { $('div').height(function (index, value) { //index 是索引,value 是原本值 return value - 1; //无须调整类型,直接计算 }); });
内外边距和边框尺寸方法
innerWidth()获取元素宽度,包含内边距padding
innerHeight()获取元素高度,包含内边距padding
outerWidth()获取元素宽度,包含边框border和内边距padding
outerHeight()获取元素高度,包含边框border和内边距padding
outerWidth(ture)同上,且包含外边距
outerHeight(true)同上,且包含外边距
<body> <div title="aaa" style="width:200px;padding:100px"> <strong>www.xixi.com</strong> </div> </body>
当style="width:200px;padding:100px"
$(function () { //padding alert($('div').width()); //200 alert($('div').innerWidth()); //400 alert($('div').outerWidth()); //400 alert($('div').outerWidth(true)); //400 });
~~~~
<body> <div title="aaa" style="width:200px;padding:100px; border:100 solid #ccc;"> <strong>www.xixi.com</strong> </div> </body>
当style="width:200px;padding:100px; border:100 solid #ccc;
$(function () { //padding, border alert($('div').width()); //200 200 alert($('div').innerWidth()); //400 400 alert($('div').outerWidth()); //400 600 alert($('div').outerWidth(true)); //400 600 });
~~~~
<body> <div title="aaa" style="width:200px;padding:100px; border:100 solid #ccc;margin:100px;"> <strong>www.xixi.com</strong> </div> </body>
当style="width:200px;padding:100px; border:100 solid #ccc;margin:100px;"
$(function () { //padding, border, margin alert($('div').width()); //200 200 200 alert($('div').innerWidth()); //400 400 400 alert($('div').outerWidth()); //400 600 600 alert($('div').outerWidth(true)); //400 600 800 });
元素偏移方法
(1)offset()获取某个元素相对于视口的偏移位置
<body> <div title="aaa" style="position:absolute;top:10px;"> <strong>www.xixi.com</strong> </div> </body>
查看div相对于视口的偏移位置是多少
$(function () { alert($('div').offset().top); //10 });
查看<strong></strong>离<div></div>的偏移位置
$(function () { alert($('strong').offset().top); //11 });
(2)position()获取某个元素相对于父元素的偏移位置
<body> <div title="aaa" style="position:relative;"> <strong style="position:absolute;top:1px;">www.xixi.com</strong> </div> </body>
查看<strong></strong>相对的<div></div>的像素
$(function () { alert($('strong').position().top); //1 });
(3)scrollTop()获取垂直滚动条的值
<body> <p>1</p><p>1</p><p>1</p><p>1</p><p>1</p><p>1</p> <p>1</p><p>1</p><p>1</p><p>1</p><p>1</p><p>1</p> <p>1</p><p>1</p><p>1</p><p>1</p><p>1</p><p>1</p> <p>1</p><p>1</p><p>1</p><p>1</p><p>1</p><p>1</p> <p>1</p><p>1</p><p>1</p><p>1</p><p>1</p><p>1</p> <p>1</p><p>1</p><p>1</p><p>1</p><p>1</p><p>1</p> <p>1</p><p>1</p><p>1</p><p>1</p><p>1</p><p>1</p> <p>1</p><p>1</p><p>1</p><p>1</p><p>1</p><p>1</p> </body>
查看目前滚动条的位置和上面点的位置
$(function () { alert($(window).scrollTop()); //318像素 });
(4)scrollTop(value)设置垂直滚动条的值
设置滚动条刷新的值是300像素的位置
$(function () { $(window).scrollTop(300); });
(5)scrollLeft() 获取水平滚动条的值
(6)scrollLeft(value) 设置水平滚动条的值
DOM节点操作
DOM中有一个非常重要的功能,就是节点模型,也就是DOM中的“M”。页面中的元素结构就是通过这种节点模型来互相对应着的,只需要通过这些节点关系,可以创建、插入、替换、克隆、删除等等一些列的元素操作。
一.创建节点
为了使页面更加智能化,有时我们想动态的在html结构页面添加一个元素标签,那么在插入之前首先要做的动作就是:创建节点。
$(function () { var box = $('<div id="box">节点</div>'); //创建节点(在内存中)赋值给变量box $('body').append(box); //将节点插入到<body>元素内部 });
结果:
<body>
<div id="box">节点</div>
</body>
二.插入节点
在创建节点的过程中,其实我们已经演示怎么通过.append()方法来插入一个节点。但除了这个方法之余呢,jQuery提供了其他几个方法来插入节点。
<body> <div>节点</div> </body>
1.内部插入节点方法
(1)append(content)向指定元素内部后面插入节点content
$(function () { $('div').append('<strong>DOM</strong>'); //向div内部插入strong节点DOM });
(2)append(function(index, html) {})使用匿名函数向指定元素内部后面插入节点
$(function () { $('div').append(function (index, html) { //使用匿名函数插入节点,html return '<strong>DOM</strong>' + index + html; //第一个参数index=0第二个参数html传值DOM }); });
(3)appendTo(content)将指定元素移入到指定元素content内部后面
<body> <strong>DOM</strong> <div>节点</div> </body>
将<strong>DOM</strong>放到<div>节点</div>同级节点的后面去
$(function () { $('strong').appendTo('div'); //移入操作,不需要创建节点 });
(3)prepend(content)向指定元素 content 内部的前面插入节点
<body> <div>节点</div> </body>
创建<strong>DOM</strong>插入到<div>节点</div>节点前面
$(function () { $('div').prepend('<strong>DOM</strong>'); /将span移入div内部的前面 });
(4)prepend(function(index, html) {}) 使用匿名函数向指定元素内部的前面插入节点
$(function () { $('div').prepend(function (index, html) { return '<strong>DOM</strong>' + index + html; }); });
结果:DOM0节点节点
(5)prependTo(content)将指定元素移入到指定元素 content内部前面
<body> <div>节点</div> <strong>DOM</strong> </body>
将<strong>DOM</strong>放到<div>节点</div>同级节点的前面去
$(function () { $('strong').prependTo('div'); });
2.外部插入节点方法
<body> <div>节点</div> </body>
(1)after(content)向指定元素的外部后面插入节点content
$(function () { $('div').after('<strong>DOM</strong>'); ////向div的同级节点后面插入span });
结果:
节点
DOM
(2)after(function (index, html) {}) 使用匿名函数向指定元素的外部后面插入节点
$(function () { $('div').after(function (index, html) { return '<strong>DOM</strong>' + index + html; }); });
结果:
节点
DOM0节点
(3)before(content)向指定元素的外部前面插入节点content
$(function () { $('div').before('<strong>DOM</strong>'); //向div的同级节点前面插入span });
结果:
DOM
节点
(4)before(function (index, html) {})使用匿名函数向指定元素的外部前面插入节点
$(function () { $('div').before(function (index, html) { return '<strong>DOM</strong>' + index + html; }); });
结果:
DOM0节点
节点
(5)insertAfter(content)将指定节点移到指定元素content外部的后面
<body> <strong>DOM</strong> <div>节点</div> </body>
将<strong>DOM</strong>移入到<div>节点</div>的后面
$(function () { $('strong').insertAfter('div'); //将span元素移到div元素外部的后面 });
(6)insertBefore(content)将指定节点移到指定元素content
<body> <div>节点</div> <strong>DOM</strong> </body>
将<strong>DOM</strong>移入到<div>节点</div>的前面
$(function () { $('strong').insertBefore('div'); });
三.包裹节点
jQuery提供了一系列方法用于包裹节
<body> <div>节点</div> </body>
1.包裹节点
(1)wrap(html)向指定元素包裹一层html代码
第一种写法:
$(function () { $('div').wrap('<strong class="xi"></strong>'); //在div外层包裹一层strong });
结果:
<strong class="xi"><div>节点</div></strong>
第二种写法:自动转化成双标签把div节点包含在里面
$(function () { $('div').wrap('<strong />'); });
结果:
<strong>
<div>节点</div>
</strong>
第三写法:添加内容
$(function () { $('div').wrap('<strong>西西</strong>'); //包裹的元素可以带内容 });
结果:
<strong>西西
<div>节点</div>
</strong>
第四种:多个节点包裹
$(function () { $('div').wrap('<strong><em></em></strong>'); });
结果:
<strong>
<em>
<div>节点</div>
</em>
</strong>
(2)wrap(element)向指定元素包裹一层DOM对象节点
<body> <strong></strong> <div>节点</div> </body>
方式1:把<strong></strong>获取到包裹到div里面
$(function () { $('div').wrap($('strong').get(0)); });
结果:
<strong></strong>
<strong>
<div>节点</div>
</strong>
方式2:
$(function () { $('div').wrap(document.createElement('strong')); //临时的原生DOM });
(3)wrap(function (index) {})使用匿名函数向指定元素包裹一层自定义内容
$(function () { $('div').wrap(function (index) { return '<strong>' + index + '</strong>' }); });
结果:
<strong>0
<div>节点</div>
</strong>
(4)unwrap() 移除一层指定元素包裹的内容
$(function () { $('div').wrap('<strong><em></em></strong>'); //创建俩层 $('div').unwrap(); //移除一层 });
结果:
<strong>
<div>节点</div>
</strong>
(5)wrapAll(html)用html将所有元素包裹到一起
<body> <div>节点</div> <div>节点</div> </body>
把俩个<div>节点</div>包含在<strong></strong>里
$(function () { $('div').wrapAll('<strong></strong>'); //所有div外面只包一层strong });
结果:
<strong>
<div>节点</div>
<div>节点</div>
</strong>
(6)wrapAll(element)用DOM对象将所有元素包裹在一起
$(function () { $('div').wrapAll(document.createElement('strong')); });
结果:
<strong>
<div>节点</div>
<div>节点</div>
</strong>
(7)wrapInner(html)向指定元素的子内容包裹一层html
$(function () { $('div').wrapInner('<strong></strong>'); ////包裹子元素内容 });
结果:
<body>
<div>
<strong>节点</strong>
</div>
<div>
<strong>节点</strong>
</div>
</body>
(8)wrapInner(element) 向指定元素的子内容包裹一层DOM对象节点
$(function () { $('div').wrapInner(document.createElement('strong')); });
结果:
<body>
<div>
<strong>节点</strong>
</div>
<div>
<strong>节点</strong>
</div>
</body>
(9)wrapInner(function (index) {})用匿名函数向指定元素的子内容包裹一层
$(function () { $('div').wrapInner(function (index) { return '<strong>' + index + '</strong>' }); });
结果:
<body>
<div>
<strong>0节点</strong>
</div>
<div>
<strong>1节点</strong>
</div>
</body>
注意:.wrap()和.wrapAll()的区别在前者把每个元素当成一个独立体,分别包含一层外层;后者将所有元素作为一个整体作为一个独立体,只包含一层外层。这两种都是在外层包含,而.wrapInner()在内层包含。
四.节点操作
除了创建、插入和包裹节点,jQuery还提供了一些常规的节点操作方法:复制、替换和删除节点。
<body> <div>节点</div> </body>
复制节点:
$(function () { $('div').click(function () { alert('xixi.com'); //事件处理点击div这个节点弹出xixi.com }); $('div').clone(true).appendTo('body'); //复制一个节点添加到HTML中 });
复制节点后第二个复制出来的节点也可以做到事件处理点击div这个节点弹出xixi.com
注意:clone(true)参数可以为空,表示只复制元素和内容,不复制事件行为。而加上true参数的话,这个元素附带的事件处理行为也复制出来。
删除节点:
$(function () { $('div').click(function () { alert('xixi.com'); }); $('div').remove(); //直接删除div元素 });
带参数删除:
<body> <div class="box">节点</div> <div>节点</div> </body>
只删除class="box"的div节点
$(function () { $('div').click(function () { alert('xixi.com'); }); $('div').remove('.box'); });
注意:.remove()不带参数时,删除前面对象选择器指定的元素。而.remove()本事也可以带选择符参数的,比如:$('div').remove('#box');只删除 id=box 的 div。
保留事件的删除节点
$(function () { $('div').click(function () { alert('xixi.com'); }); $('div').detach().appendTo('body'); //保留事件行为的删除 });
注意:.remove()和.detach()都是删除节点,而删除后本身方法可以返回当前被删除的节点对象,但区别在于前者在恢复时不保留事件行为,后者则保留。
清空节点保留div空标签
$(function () { $('div').click(function () { alert('xixi.com'); }); $('div').empty(); });
替换节点把<div>节点</div>节点换成<span>DOM</span>
方式一:
$(function () { $('div').click(function () { alert('xixi.com'); }); $('div').replaceWith('<span>DOM</span>'); //将div替换成span元素 });
方式二:
$(function () { $('div').click(function () { alert('xixi.com'); }); $('<span>DOM</span>').replaceAll('div'); //将div替换成span元素 });
注意:节点被替换后,所包含的事件行为就全部消失了。