2015-05-03 106 views
0

我有以下代碼,它只允許一組jQuery懸停函數在窗口寬度高於760像素時執行。jQuery .resize處理程序的問題

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以下。關於爲什麼會發生這種情況的任何想法?謝謝。

回答

0

,當你做反了,該語句

if(windowWidth >= 760) 

會是假的,以前那是真的..對不對?所以它添加了類和所有東西,所以你需要和其他語句的例子來更改類返回

如果它最初很小,那麼這個語句將是錯誤的,如果你將它重新設置,那麼這個語句將是真實的,並且類將會被改變

+0

我會認爲,因爲我添加了jQuery(window).resize(checkWidth);在底部,一旦我在760以下運行,它會再次變回false,因爲代碼在每次窗口大小調整時都會執行。 – kdsprogrammer