1、mouseenter 添加类,leave 删除此类
2、click : $(this).parents("xx").find(".active").removeClass("active");
$(this).addClass("active");
问题是click之后移出方块会触发leave,导致不能选中点击过的方块
解决 var x_ = false,currentObj;
点击完就把x_置为true,并保存当前点击的对象currentObj = this;
当x_为false的时候才能mouseenter添加类和删除类;true的话把标记改为负再添加类
leave里面跟着就会触发remove,但是给cuurentObj。addClass就没问题,随便前面怎么remove
<metahttp-equiv="X-UA-Compatible"content="IE=edge"/>
或者
<metahttp-equiv="X-UA-Compatible"content="IE=9"/>
var a = null;
(!a && typeof a === "object"); // true
如果你对一个变量使用 typeof,它不会像表面上看起来那样询问“这个变量的类型是什么?”,因为 JS 变量是没有类型的。取而代之的是,它会询问“在这个变量里的值的类型是什么?”
var a = 42;
typeof a; // "number"
a = true;
typeof a; // "boolean"
typeof 操作符总是返回字符串。所以:
typeof typeof 42; // "string"
undefined 已声明未赋值 undeclared 未声明
//注意点
var a;
typeof a; // "undefined"
typeof b; // "undefined"
变量没有类型,但是值有类型.
防抖:之前蓄力不算了
ES3:
string:
charAt(index):表示字符串索引为index处的字符,如果index超出范围,返回空字符。
charCodeAt(index):表示字符串索引为index处的字符的Unicode编码,如果index超出范围,返回NaN。
concat(str,...):连接多个字符串,返回连接后的字符串,原str不受影响。
indexOf(val,index):检索val在str中的位置,不传下标从首字符开始,val不存在的话返回-1。
replace(str/reg,replacement):第二个参数替换一。
search(str/reg):检索子str或者reg的下标,不支持/g,意味着只能返回第一次出现的reg,没有就返回-1,比indexOf多一个检索正则的功能少一个参数。
slice(start,end):支持负数,-1表示倒数第一位。
split(xx,howmany):字符串分割成数组,howmany表示返回的数组长度(可能str分割成了10份,但是我howmany=5,只返回前5个)。
toLocaleLowerCase(),toLocaleUpperCase()。
array:
concat(arr,..):连接数组。
join():数组转字符串。
pop():删除并返回数组最后一个元素。
shift():删除并返回数组的第一个元素。
push():末尾添加一或多个元素,返回新长度,是个数字。
unshift():头部添加一或多个元素,返回新长度,是个数字。
reverse():颠倒数组,不产生新数组,直接在原数组上搞。
slice(start,end):截取数组.
sort(func):排序。
splice(index,howmany,...):从数组index处开始删除howmany个值,并添加...,直接改的原数组 。
toString():数组转换为字符串,并返回结果,返回值与没有参数的 join() 方法返回的字符串相同.