2011-07-25 83 views
0

我的頁面在加載頁面時呈現完美效果。 (當我將鼠標懸停在它們上面時,我的行應該會突出顯示)。爲什麼live()和load()不起作用?

當我通過jQuery加載事件加載頁面時,頁面完美呈現,但行懸停時不突出顯示。

我很確定問題在於當負載發生時DOM沒有被更新。通常情況下,通過整合現場活動可以輕鬆解決這個問題

雖然這不行。你可能知道它爲什麼不起作用嗎?

<script type="text/javascript"> 
$(document).ready(function() { 

$("#ListByFranchisor").live("click", function() { 
     $("#ListResultsDiv").load("advisors/recommendationsbyfranchisors.cfm").slideDown(); 
}); 

}); 
</script> 



$(".data tr:not(.head)").mouseover(function() { 
    $(this).addClass('over'); 
}); 

$(".data tr").mouseout(function() { 
    $(this).removeClass('over'); 
}); 
+0

什麼是活的代碼()懸停效果 - 因爲這是這不是可能工作的一部分? –

+0

「懸停」功能在哪裏? – PeeHaa

+1

我是否需要將實時事件添加到mouseover/mouseout事件而不是「$(」#ListByFranchisor「)。live(」click「?) –

回答

0

您需要使用live()你要綁定的動態地添加上,增加要素的功能元素,而不是事件。

$(document).ready(function() { 
    $("#ListByFranchisor").click(function() { 
    $("#ListResultsDiv").load("advisors/recommendationsbyfranchisors.cfm").slideDown(); 
    }); 

    $(".data tr:not(.head)").live('mouseover', function() { 
    $(this).addClass('over'); 
    }); 

    $(".data tr").live('mouseout', function() { 
    $(this).removeClass('over'); 
    }); 
}); 

此外,你可能想要看看delegate()以獲得更好的性能。

http://api.jquery.com/delegate/

+0

這就是我的代碼看起來的樣子現在它完全解決了這個問題,我也是理解爲什麼。謝謝!!!我將檢查委託()。 –

+0

@Evik james:很高興能夠幫到你:) – PeeHaa

1
$(function(){ 
    $(".data tr:not(.head)").live({ 
      mouseenter:function() 
       { 
       $(this).addClass('over'); 
       } 
    }); 

    $(".data tr").live({ 
      mouseleave:function() 
       { 
       $(this).removeClass('over'); 
       } 
    }); 
});   

EDIT

的mouseenter和鼠標懸停之間的差別在於的mouseenter(和鼠標離開)不冒泡。這意味着如果鼠標移動到你綁定的元素內(這可能不是你想要的),你將得到一個mouseover事件,而如果鼠標進入該元素本身,你將只會得到一個mouseenter事件。有關示例,請參閱documentation

REF:Jquery help me analyze what happened: mouseover/mouseout ok but not hover/unhover

Here另一個鏈路

+0

這就是我需要的,只是有點晚了。mouseover和mouseenter以及mouseout和mouseleave之間是否有區別? –

0

這個怎麼樣?

$(".data tr:not(.head)").live('mouseover',function(){ $(this).addClass('over');}).live('mouseout',function(){$(this).removeClass('over');}); 
+0

是的,這看起來像我需要的,只是有點晚,如果你能相信它。謝謝你的幫助! –

0

使用.delegate()在容器上,你就設置

$(".data").delegate('tr:not(.head)', 'mouseover', function() { 
    $(this).addClass('over'); 
}).delegate('tr.over', 'mouseout', function() { 
    $(this).removeClass('over'); 
}); 
+1

你是代碼壞了我認爲 – PeeHaa

+0

我想念一個(顯然 – Claudio

相關問題