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