2010-01-13 83 views
0

我通過jquery.append追加HTML到DOM - 我的腳本如下(請原諒蹩腳的代碼)的Jquery無法懸停追加HTML

myDiv = $("<div class='bottomright' title="+msgID+">"+msgTitle+msgContent+ 
"</div>").appendTo(document.body).fadeOut(0).slideDown('fast'); 
shown.push(msgID); 

是有不同的方式來解決或者懸停或追加(因爲看着螢火蟲,似乎divs進入了那裏,他們顯示完美),以便我可以使用懸停功能?

當我說我不能使用它,我的意思是它實際上什麼也不做,我寫了下面並沒有任何反應:

$(".bottomright").hover(function(){ 
    alert("text") 
}) 

回答

6

hover有兩個功能參數:

第一參數是元素從鼠標獲得焦點時要執行的函數。 當元素失去焦點時,第二個被觸發。

- 丁 因爲你是動態生成這些元素,你需要使用live

livehover工作,所以你不得不這樣做:

$('.bottomright').live('mouseover', function() { alert("in"); }) 
        .live('mouseout', function() { alert("out"); }); 
0

您需要使用live()函數,因爲看起來你的div是動態生成的:

$('.bottomright').live('hover', function() { alert("text"); }, function() {}); 
+1

我不知道生活實際上是否適用於懸停。您可能必須創建兩個實時事件(mouseover和mouseout)。 – Joel 2010-01-13 00:38:26

+0

是的,我在看它...它並沒有說它確實,但它並沒有說它不是:http://docs.jquery.com/Events/live#typefn – Jason 2010-01-13 00:39:26

+0

從http:///api.jquery.com/hover:'s.hover(h1,h2)'等同於's.mouseover(h1); s.mouseout(h2);'。因此,我得出結論,懸停實際上不是事件,而是事件的組合。 – Joel 2010-01-13 00:43:43

0

歡迎來到Stack Overflow!

只是一個提示 - 它真的有助於使用頂部的10101按鈕格式化代碼。例如:

myDiv = $(""+msgTitle+msgContent+"").appendTo(document.body).fadeOut(0).slideDown('fast'); 
shown.push(msgID); 

關於你的問題,我猜你的對象「bottomright」可能不會佔用任何空間。我注意到你的fadeOut和slideDown,也許還有別的東西導致div不佔用任何空間? (檢查螢火蟲佈局標籤)。

另外,你創建div後綁定你的懸停事件?如果它在之前,它可能不起作用。在jQuery 1.3中,他們還添加了live(type,fn)來綁定所有未來的對象。

0

我想我找到了答案 - 我所做的只是將懸停調用移至生成div的位置,該位置位於for循環中。我進一步讀了一些,它不工作的原因是因爲它在DOM加載時激活了懸停,但沒有div來幫助它 - 通過每次創建div時運行它,它似乎工作得很好。也許有更好的方式做到這一點?謝謝你!我會嘗試.live()