简单记录一下学习jQuery中遇到的比较好的点,值得记录下来的(可能有点乱)
//将当前字体变红色 其余的(siblings是除自己之外的兄弟)字体全恢复黑色
$(this).css("color","red").siblings().css("color","#000");
left: 50
,则移动到50的地方(移动的元素要有定位)$(".box").eq(2).stop().slideToggle();
element.triggerHandler(事件) 不会触发默认行为(事件也不会冒泡)
注意 若想要触发事件的默认行为,若事件为a的点击,想触发默认行为跳转页面,直接a.trigger("click")不行,要在a标签里加一个span再监听span的内容
function() {
arr = [1,2,3];
[].push.apply(this, arr);
//上面这句话相当于 把arr这个真数组转变为了伪数组
}
call 和 apply 都是为了改变某个函数运行时的上下文(context)而存在的,换句话说,就是为了改变函数体内部 this 的指向。
它们俩唯一不同点就是传参方式
第一个参数都一样,就是要修改函数体内部this指向变成什么,
第二个,call第一个以后的参数都作为前面调用者的参数,而apply只能有两个参数,第二个是一个数组,里面包括所有待传的参数
这里先说一下伪数组的定义,具有以下两种特性的对象就可以称之为伪数组(js中一切皆对象)
- 有0 1 2 3...的索引值
- 有length属性
var farr2 = {};
var arr2 = [1,3,5,7];
[].push.apply(farr2, arr2);
console.log(farr2);
[].push()
先说第一种方法吧,有兼容性问题(ie8及以下不支持)
var farr = {0:1, 1: 2, 2: 3, length: 3};
var arr = [];
[].push.apply(arr, farr);
console.log(arr);
原理和上面一样,就不赘述了
第二种方法 用slice 而不是push,此方法没有兼容性问题
var farr3 = {0:1, 1: 2, 2: 3, length: 3};
//这里选择不传参数 则返回整个数组并赋给arr3
var arr3 = [].slice.apply(farr3);
console.log(arr3);
原文:https://www.cnblogs.com/TRY0929/p/11955145.html