函数无法创建变量并使用jquery?

时间:2013-07-16 19:55:20

标签: javascript jquery html css

我有一个改变某些图像宽度的功能。当我将鼠标悬停在不同功能的不同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');


    });

在我检查$(this).hasClass('cont1')时,在mouseenter()函数中,我执行了一个有效的警报。之后我调用函数hey()。这是我的问题出现的地方。在调用函数hey()之后,我执行另一个警报(0),这也是有效的。但是之后的代码行没有被执行,最后一个警报(2)也不起作用。

2 个答案:

答案 0 :(得分:3)

您的代码中存在错误。

替换:

var $imgContent = ('.imgContent');

使用

var $imgContent = $('.imgContent');

答案 1 :(得分:0)

你的jquery对象定义中有错误。

jQuery()

  

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

所以在你的情况下你应该:

var $imgContent = $('.imgContent');
$imgContent.css("width","10%");

另外,请务必注意,在.mouseenter()功能中,您可以参考:

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

$ content和$(this)都指向同一个对象,所以本质上这些行是毫无意义的。