2013-11-03 37 views
0

我有一個令人驚訝的簡單的jQuery代碼塊,不能按預期方式工作。jQuery.hover不工作

我想將鼠標懸停在它上面時更改div的類,並在鼠標超出div區域時將其恢復。這是我的代碼。

function WireHandlers() 
{ 
    SetBannerHoverImage(); 
} 

function SetBannerHoverImage() 
{ 
    $("#banner").hover(OnBannerHover. OnBannerOut); 
} 

function OnBannerHover() 
{ 
    $("#banner").removeClass("grayGradiant"); 
    $("#banner").addClass("redGradiant"); 
} 

function OnBannerOut() 
{ 
    $("#banner").removeClass("redGradiant"); 
    $("#banner").addClass("grayGradiant"); 
} 

$(document).ready(function() { WireHandlers(); }); 

的的document.ready不調用WireHandlers,這並調用SetBannerHoverImage,這併成功地調用$(selector).hover()方法。

但是,當我將鼠標懸停在div上時,不會調用OnBannerHoverOnBannerOut偵聽器。

PS:重要的是要注意,覆蓋面積100%的div是一個表格。

+1

你的意思'(OnBannerHover,OnBannerOut);'? –

+0

是否有任何理由使用不必要的函數對一個「懸停」事件進行復雜處理? –

回答

1

比如上例中,從api.jquery.com你需要用逗號來單獨處理程序:

$(selector).hover(handlerIn, handlerOut) 

所以嘗試:

$("#banner").hover(OnBannerHover, OnBannerOut); 
+0

該死的錯字。謝謝。 :-) 6分鐘後,我可以將這個答案標記爲正確的答案。 –

0

也許你可以試試:

$("#banner").hover(
function(){ 
$(this).removeClass('red').addClass('grey'); 
}, 
function(){ 
$(this).removeClass('grey').addClass('red'); 
} 
); 
0

如果這不是錯字

$("#banner").hover(OnBannerHover. OnBannerOut); 

那麼它應該是

$("#banner").hover(OnBannerHover, OnBannerOut); 

或者,你可以使用(hover只是這些簡寫)

$("#banner").on('mouseenter', function(){ 
    $(this).removeClass("grayGradiant").addClass("redGradiant"); 
}) 
.on('mouseleave', function(){ 
    $(this).removeClass("redGradiant").addClass("grayGradiant"); 
});