链式编程
1.什么时候可以链式编程?
如果给元素调用一个方法,这个方法有返回值,并且返回的是一个jQuery对象,那就可以继续再点出jQuery方法.
//$('div').width(100).height(100).css('backgroundColor','red');
2.必须是jQuery对象才能点出jQuery方法.
console.log($('div').width(100).width()); //100
$('div').width(100).width().height(100); //报错了,因为数值不能点出jQuery方法
3.有些时候我们一个方法返回的确实是一个jQuery对象
但是这个对象又不是我们想要的对象,那这个时候就不要再继续点下去了,这时end就要出场了!
4.end方法
end()方法的定义和用法
end()方法能够回到最近的一个"破坏性"操作之前,即将匹配的元素列表变为前一次的状态。
用法:
$(selector).end()
破坏性操作的概念:指任何改变所匹配元素的操作。
$("li").css("color","red");
以上代码的CSS函数就不是一个破坏性操作,因为匹配元素列表并没有发生变化,改变的是元素中的文本内容的CSS属性。
$("li").find(".first")
以上代码就是一个破坏性操作,因为匹配元素的列表发生了变化,比如有三个li元素,那么匹配元素的列表有三个元素,但是经过使用find()方法筛选以后,匹配元素列表只有一个元素了,这就是发生了"破坏性"操作。
<ul class="container">
<li>HTML专区</li>
<li class="js">Javascript专区</li>
<li>Div+Css专区</li>
<li>Jquery专区</li>
</ul>
// 现将class为js的li标签设置为颜色,end回到$(".container")这里,再设置整个容器
$(".container").find(".js").css("color","blue").end().css("background","red")
效果如下: