jQuery .resize处理程序的问题

时间:2015-05-03 20:36:11

标签: javascript jquery

我有以下代码,它只允许在窗口宽度超过760像素时执行一组jQuery悬停函数。

jQuery(document).ready(function(){

function checkWidth(){
var windowWidth= jQuery(window).width();
if(windowWidth >= 760){
    jQuery('.wsite-menu-item-wrap').hover(
    function(){
    jQuery(this).children(".wsite-menu-wrap").addClass('hover');
    }, function(){
    jQuery(this).children(".wsite-menu-wrap").removeClass('hover');
    });//End Hover
    jQuery('.wsite-menu-subitem-wrap').hover(
    function(){
    jQuery(this).children(".wsite-menu-wrap").addClass('subitem-hover');
    }, function(){
    jQuery(this).children(".wsite-menu-wrap").removeClass('subitem-hover');
    });//End Hover
    }//EndIf
    }
checkWidth();
jQuery(window).resize(checkWidth);
});

我遇到了一个有趣的错误:当我以低于760px的宽度加载页面并调整到760以上时,它按计划运行:悬停代码不在760下执行并开始在上面执行760.但是,如果我以相反的方式进行加载760以上,然后调整到一个较小的窗口,即使在我将窗口大小调整到760以下之后,悬停代码仍会继续执行。任何关于为什么会这样做的想法发生了什么?谢谢。

1 个答案:

答案 0 :(得分:0)

当你向后做时,语句

if(windowWidth >= 760)
在它出现之前,

将是假的..对吗?所以它添加了类和所有内容,所以你需要和else语句来一个例子来改变类

如果它一开始很小,那么该判断将是错误的,如果你重新判断它,那么该判断将是真的并且类将被更改