javascript - 将两个变量设置为同一 dom 元素时,jquery 语句未评估为 true

标签 javascript jquery if-statement

我正在尝试处理 mouseover/mouseout 动画,当您将鼠标悬停在您之前将鼠标悬停在其上的元素上时,我的声明未评估为 true。我正在尝试防止出现双重翻转动画。这是我的代码:

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 将为空,而 chosenThumb 将成为您滚动的拇指。然后下次将鼠标悬停在该缩略图上时,lastThumb 应等于 chosenThumb,但日志语句的计算结果不为真。为什么?

最佳答案

即使使用相同的选择器,每个 jQuery 对象都是 jQuery 的新实例。要比较元素,您必须比较实际的 DOM 元素:

//$lastThumb[0] returns the first DOM element from the jQuery selector
$lastThumb[0] == $chosenThumb[0]

关于javascript - 将两个变量设置为同一 dom 元素时,jquery 语句未评估为 true,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8376983/

相关文章:

javascript - 我如何使用authorize === Administrator返回数组中的所有元素

javascript - if..else 在 IIFy 内部工作,但不在事件监听器内部工作

java - 程序不返回字符串

javascript - 如何使用 promises 对对象数组的每个元素进行 ajax 调用?

javascript - 使用useEffect Hook 时,如何避免多余的React组件渲染?

javascript - 在 JavaScript 中遍历数组时的奇怪行为

javascript - 类内的 typescript 私有(private)类或类似的东西

javascript - 我想在同一个弹出窗口中显示第二个下拉列表

jquery - 使用方向检测来确定图像的位置

linux - Bash 中带有变量的 If 语句