<div class="wrapper">
<div class="Essay"><a href="#" ><img src="milan3.jpg"/></a></div>
<div class="Aboutme"><a href="#" ><img src="milan3.jpg"/></a></div>
<div class="News"><a href="#" ><img src="milan3.jpg"/></a></div>
</div>
$(".Aboutme").mouseover(function(){
if($(".Aboutme").next()==$(".News")){
alert("move");
}
$(this).next().animate({left:'250px'});
});
现在的问题是下面的animate动作是可以完成的,但是上面的alert却不能完成,也就是if判断不对,这是为什么呢?
$(".Aboutme").next() === $(".News") //false
{} === {} //false
{a:1} === {a:1} //false
与后两条比较一样,你所比较的两个对象是不相等的。
你要确定比较的是两个对象,还是比较对象的属性。根据你的要求,应该是这样
$(".Aboutme").next()[0] === $(".News")[0])
$('.Aboutme').next().is('.News')
每次调用一次$()
方法,在jq内部实际上就调用了一次new方法
既然都调用new方法了,说明每使用一次$()
,在堆内存中就单独分配了一块空间来存放该对象。
因此虽然他们可以操作同一个dom节点,但是他们实际上是不相等的。
$('.News') == $('.News') // false
其实你写$(".News")==$(".News")也返回false。
显然next函数并不是定义在element上面的,所以你$(".News")返回的也不是那个<div>,而是jquery给你包好的一个对象。为了实现方便,他可能每次都给你产生一个新的wrapper,然后这个wrapper里面有next函数给你用。因此你需要先获取对应的<div>,然后再比较。
正确写法:
$(".Aboutme").next().get(0)==$(".News").get(0)