简要说明parent,closest,parents,parentUntil

这几个筛选器都是找直系祖先元素的,但具体用法不同
.parent(expr) - 只把父级和expr表达式匹配,匹配成功就返回父级。匹配失败,返回空数组
.parents(expr) - 加了s,就成了匹配祖先了,从父级开始查找,只要是和expr表达式匹配的直系祖先元素都返回。没匹配成,返回空数组
.closest(expr) - 这个是查最近的匹配元素(从自己开始查找),匹配成功,立即返回。匹配失败,返回空数组
.parentsUntil(expr) - 这个是从父级开始查找,到expr停止。返回父级(包括)到expr(不包括)之间的直系祖先元素。如果expr没有匹配到元素,会返回父级(包括)到html(包括)之间的所有直系祖先元素

使用pushState和popstate优化ajax

现在越来越多的网站都会使用到ajax,ajax优点有很多。操作方便、刷新速度快、节省流量、用户体验好等等...但是,ajax使用的缺点也是显而易见的,首先ajax请求并不会在history中添加记录状态。
这样,当用户习惯性的点击了后退或前进按钮的时候,这时呈现的页面,可能就和用户期望得到的结果差之千里了

当然这可以通过使用#改变哈希值的方式来向history添加记录状态,来实现同浏览器后退前进操作友好兼容。但是,这样,却又影响了搜索引擎的收录,搜索引擎是不去理会#后面的东西的。哎,为什么总是这样子不完美呀,纠结死了,到底有没有完美一点的解决方案呀