破坏性操作是当一个jQuery函数被使用在一个对象后造成此对象的结构变化。
创新互联专注于企业网络营销推广、网站重做改版、新区网站定制设计、自适应品牌网站建设、H5响应式网站、商城网站定制开发、集团公司官网建设、外贸网站制作、高端网站制作、响应式网页设计等建站业务,价格优惠性价比高,为新区等各大城市提供网站开发制作服务。
举个例子:
var obj = $("body").find("p");
在 body 没有被使用 find 之前,对象 obj 包括 body 和 body 之内的所有元素
但 body 在被使用 find 之后,对象 obj 只包括 p 元素,原来的其它元素已不复存在,也就是说 原来的对象 obj 的结构被破坏,或者说被修改。
实例:
$("#blog").find("p.title").css({fontWeight: "bold"});
现在上面这行代码运行后剩下的是全部的 p,如果要继续对 $("#blog") 对象进行修改,例如设置 $("#blog") 的高度为200
$("#blog").find("p.title").css({fontWeight: "bold"}).css({height: 200}); // 错误,这样写会修改 p 的高度
$("#blog").find("p.title").css({fontWeight: "bold"}).end().css({height: 200}); // 正确
在破坏性操作之后可以使用 end() 来还原对象。
在一段代码声明后(;),jQuery会自动还原对象,破坏性操作只是在一段连贯的声明中起作用。
$("#blog").find("p.title").css({fontWeight: "bold"});
// jQuery 自动 end()
$("#blog").css({height: 200});
等同上面连在一起写的代码。
.end() 表示结束之前的过滤操作,将对象还原为最初,譬如:
$('.foo').find('div').css('height','25px').end().css('color','red');
这句就是先找到.foo 样式类下的所有div 并把高度设置成25px,而后退到$('.foo') 去 把整个$('.foo') 的文本颜色设置成红色
总结起来说.end()就是让$('.foo').find('div').css('height','25px')
回退到$('.foo')继续对$('.foo')对象
详细说明请阅读w3school的api介绍
地址:
end()
回到最近的一个"破坏性"操作之前。即,将匹配的元素列表变为前一次的状态。
如果之前没有破坏性操作,则返回一个空集。所谓的"破坏性"就是指任何改变所匹配的jQuery元素的操作。这包括在 Traversing 中任何返回一个jQuery对象的函数--'add', 'andSelf', 'children', 'filter', 'find', 'map', 'next', 'nextAll', 'not', 'parent', 'parents', 'prev', 'prevAll', 'siblings' and 'slice'--再加上 Manipulation 中的 'clone'。
示例
HTML 代码:
div id="test"
h1jQuery end()方法/h1
p讲解jQuery中end()方法。/p
/div
jQuery 代码:
$(document).ready(function() {
$("#test").click(function() {
$(this).find("p").hide().end().hide();
});
});
结果:
点击id为test的div时,首先找到div里边的p标签,将其隐藏。接下来使用end()方法结束了对p标签的引用,此时返回的是#test(jQuery对象),从而后边的hide()方法隐藏了div。
该博客基于阮一峰前辈在2011年所做的分享(原链接: )
jQuery的核心就是:可以选择某个网页元素,然后对其进行某种操作
我们可知jQuery是一个构造函数,那么我们就可以通过选择表达式,把选中的元素,放进jQuery构造函数($)当中,从而得到选中的元素。
而选择表达式可以是CSS选择器:
也可以是jQuery特有的表达式:
在jQuery当中最终选中网页元素以后,可以对它进行一系列操作,并且所有操作可以连接在一起,以链条的形式写出来,比如:
拆解开来,就是:
这是jQuery最令人称道、最方便的特点。它的原理在于每一步的jQuery操作所返回的都是一个jQuery对象,所以不同操作可以连在一起。
jQuery还提供了.end()方法,使得结果集可以后退一步:
创建新元素的方法非常简单,只要把新元素直接传入jQuery的构造函数就行了:
操作元素在网页中的位置移动有两种方法:
(1)直接移动该元素;
(2)移动其他元素,使得目标元素达到我们想要的位置。
(1)方法是使用.insertAfter(),把div元素移动p元素后面:
(2)方法是使用.after(),把p元素加到div元素前面:
表面上看,这两种方法的效果是一样的,唯一的不同似乎只是操作视角的不同。但是实际上,它们有一个重大差别,那就是返回的元素不一样。第一种方法返回div元素,第二种方法返回p元素。你可以根据需要,选择到底使用哪一种方法。
使用这种模式的操作方法,一共有四对:
text(?) //读写文本内容
用于返回内容时,则返回所有匹配元素的文本内容(会删除 HTML 标记)。
用于设置内容时,则重写所有匹配元素的内容。
html(?) //读写HTML内容
设置或返回被选元素的 innerHTML(文本 + HTML 标记)
attr('title',?) // 读写属性
设置或返回被选元素的属性值。
css({color:'red'}) //读写style
设置或返回被选元素的一个或多个样式属性。
addClass('blue')
向被选元素添加一个或多个类。
该方法不会移除已存在的 class 属性,仅仅添加一个或多个 class 属性。
on('click',fn)
支持动态绑定元素,即页面上元素有添加或变化后仍可绑定,前提是selector须是目标绑定元素的父元素
off('click',fn)
用于移除通过 on()方法添加的事件处理程序