链式编程
- 通常情况下,只有设置操作才能把链式编程延续下去。因为获取操作的时候,会返回获取到的值,而不返回jq对象
- 可以链式:返回jq对象。
- 不可链式:返回的不是jq对象(数字…)。
- **end方法:**调节链式编程中的jq对象,使整个链的jq对象始终为原始的。
// 此时返回的jq对象不是$(this) $(this).text(wjx_s).prevAll().text(wjx_s); // 而是prevAll()的对象 $(this).nextAll().text(wjx_k); // 在prevAll()操作之后加end(),使jq对象调整为$(this),于是可以接着链式编程 $(this).text(wjx_s).prevAll().text(wjx_s).end().nextAll().text(wjx_k);
each遍历jq对象
- jQuery的隐式迭代会对所有的DOM对象设置相同的值,但是如果我们需要给每一个对象设置不同的值的时候,就需要自己进行迭代了
- for循环(多捞哦):
for(var i=0;i<$("li").length;i++){ $("li").eq(i).css("opacity",(i+1)/10); }
- each()方法:
// i: 循环使的索引 // v: 当前索引处的js对象 $("li").each(function (i,v) { $(v).css("opacity", (i+1)/10); });
- forEach和each()的区别:
- dom的
forEach
只能在数组用,而jq的each
能在所有jq对象使用。 forEach(function(val,i){...});
: 先值后索引
jq对象.each(function(i,val){...});
: 先索引后值
- dom的
- 建议: 多用
each()
方法少用for循环。
$冲突问题
jQuery中$权限释放
- 背景: 如果引入两个文件,先引入文件0再引入jQuery,文件0中有
$
的对象,则下面代码直接使用$
就一直是jQuery的。如何将$
变成文件0中的那个对象? - jQuery使用
$
作为标示符,但是如果与其他框架中的$
冲突时,jQuery可以释放$符的控制权. - 前提: 当前
$
的权限由jQuery控制。// 释放$的控制权,并且把$的能力给了c // 要使用jQuery只需将`$`变成前边的`c`(任意)即可 var c = $.noConflict();
- 注意: 如果文件0是在jQuery后边引入的,也就是jQuery没有
$
的控制权,此时无需释放权限