[英]jquery statement not evaluating as true when setting two variables as the same dom element
我正在尝试处理鼠标悬停/鼠标移动动画,并且当我将鼠标悬停在之前鼠标悬停的元素上时,我所评论的声明并未评估为真。 我正在尝试阻止双翻转动画的发生。 这是我的代码:
var $chosenThumb = null;
var $lastThumb = null;
$('.thumb_img').mouseover(function(){
if ($chosenThumb != null){
$lastThumb = $chosenThumb;
$lastThumbContainer = $chosenThumb.parent();
$lastThumbOverlay = $lastThumbContainer.children('.thumb_overlay');
}
$chosenThumb = $(this);
console.log($lastThumb + "|" + $chosenThumb + "|" + ($lastThumb == $chosenThumb));
$chosenThumbContainer = $(this).parent();
$chosenThumbOverlay = $chosenThumbContainer.children('.thumb_overlay');
if ($lastThumb != null && $lastThumb != $chosenThumb){
$lastThumbOverlay.animate({ 'height' : '0px'}, 200);
$lastThumbContainer.children('.thumb_plus').animate({'height' :'0px', 'width' : '0px' },200);
}
if ($lastThumb != $chosenThumb) {
$chosenThumbOverlay.animate({ 'height' : '30px'}, 200);
$chosenThumbContainer.children('.thumb_plus').animate({'height' :'31px', 'width' : '31px' },200);
}
});
因此,当您第一次将鼠标悬停在缩略图上时,lastThumb将为null并且selectedThumb将是您翻转的拇指。 然后,当您下次将鼠标悬停在该拇指上时,lastThumb应该等于selectedThumb,但是log语句不会评估为true。 为什么?
即使是相同的选择,每一个jQuery对象是一个新实例jQuery
。 要比较元素,您必须比较实际的DOM元素:
//$lastThumb[0] returns the first DOM element from the jQuery selector
$lastThumb[0] == $chosenThumb[0]
通常,由于内存泄漏而扩展DOM元素是不可取的,但如果您没有大量节点,我可能会建议您在这种情况下执行此操作。
这将阻止mouseover事件在触发一次后触发:
$( "myselector" ).mouseover( function( )
{
if ( this.moused )
{
return;
}
else
{
this.moused = true;
}
// Do things here.
} );
可能是您的HTML中有两个具有相同ID的span或div
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.