Javascript 函数在创建变量和使用jquery时不起作用?

Javascript 函数在创建变量和使用jquery时不起作用?,javascript,jquery,html,css,Javascript,Jquery,Html,Css,我有一个函数可以改变一些图像的宽度。当我将鼠标悬停在不同函数中的不同div上时,就会发生这种情况。出于某种原因,被调用函数只执行一些代码行,然后停止 function hey() { alert(0); var $imgContent = ('.imgContent'); $imgContent.css("width","10%"); alert(2); } var $content = $('.content'); $content.mouseenter(fu

我有一个函数可以改变一些图像的宽度。当我将鼠标悬停在不同函数中的不同div上时,就会发生这种情况。出于某种原因,被调用函数只执行一些代码行,然后停止

function hey()
{
    alert(0);
    var $imgContent = ('.imgContent');
    $imgContent.css("width","10%");
    alert(2);
}

var $content = $('.content');
$content.mouseenter(function() {

    $content.removeClass('full').addClass('partial');
    $(this).addClass('full').removeClass('partial');
    $(this).find('.img1').css('display','none');
    $(this).find('.img2').css('display','');

    if($(this).hasClass('cont1')){
        alert(1);
       hey();
    }

    if($(this).hasClass('cont2')){

    }

    if($(this).hasClass('cont3')){

    }

    if($(this).hasClass('cont4')){

    }
}).mouseleave(function(){
        $(this).find('.img1').css('display','');
        $(this).find('.img2').css('display','none');
        $(this).removeClass('full').addClass('partial');


    });

在mouseenter()函数中,当我检查是否
$(this).hasClass('cont1')
时,我执行一个警报,该警报有效。之后,我调用函数hey()。这就是我的问题所在。调用函数hey()后,我执行另一个警报(0),该警报也可以工作。但是之后的代码行不会执行,最后一个警报(2)也不起作用。

您的代码中有一个错误

替换:

var $imgContent = ('.imgContent');


您的代码中有一个错误

替换:

var $imgContent = ('.imgContent');


jquery对象定义中有一个错误

Per:

jQuery()-也可以写成$()-在DOM中搜索与提供的选择器匹配的任何元素,并创建引用这些元素的新jQuery对象

因此,在您的情况下,您应该:

var $imgContent = $('.imgContent');
$imgContent.css("width","10%");
另外,需要注意的是,在
.mouseenter()
函数中,您提到:

$content.removeClass('full').addClass('partial');
$(this).addClass('full').removeClass('partial');

$content和$(this)都引用同一个对象,因此本质上这些行是没有意义的。

您在jquery对象定义中有一个错误

Per:

jQuery()-也可以写成$()-在DOM中搜索与提供的选择器匹配的任何元素,并创建引用这些元素的新jQuery对象

因此,在您的情况下,您应该:

var $imgContent = $('.imgContent');
$imgContent.css("width","10%");
另外,需要注意的是,在
.mouseenter()
函数中,您提到:

$content.removeClass('full').addClass('partial');
$(this).addClass('full').removeClass('partial');

$content和$(this)都指向同一个对象,因此本质上这些行是没有意义的。

你应该检查控制台,它应该在大部分时间为你指明正确的方向。当你遇到这样的问题时,只检查控制台比插入一百万条警报要容易得多。你应该检查控制台,它应该在大部分时间为您指明正确的方向。当您遇到这样的问题时,只需检查控制台就比插入一百万条警报容易得多。哇,一个简单的代码错误。非常感谢,老兄,我在这个问题上纠结了很长时间。哇,一个简单的代码错误。非常感谢,老兄,我在这件事上耽搁了很长时间。