2010-04-10 60 views
0

下面的這個例子工作時,懸停事件被觸發,當它不是,它的工作元素已經在DOM中,但當元素動態創建它不工作,我意識到我需要使用jQuery生活()或委託()這一點,就是我試圖修改它和它沒有產生結果不如預期,這裏是工作代碼:如何修改這個jQuery語法

$(".sidebar li").hover(
     function(){ 
     $(this).css("background-color", "#F9F4D0"); 
     $(this).append($('<button class="promoter" type="button" title="Active promotion"></button>')); 
        }, 
     function(){ 
     $(this).css("background-color", "#F9FAFA"); 
     $(this).children("button").remove(); 
       }  
        ); 

這裏是我想補充活位,但它不會產生正確的結果:

$(".sidebar li").live('hover', function(){ 
     $(this).css("background-color", "#F9F4D0"); 
     $(this).append($('<button class="promoter" type="button" title="Active promotion"></button>')); 
        }, 
     function(){ 
     $(this).css("background-color", "#F9FAFA"); 
     $(this).children("button").remove(); 
       }  
        ); 

我在哪裏犯了錯誤,謝謝你

回答

2

你可以這樣做:

$(".sidebar li").live('mouseenter', function(){ 
    $(this).css("background-color", "#F9F4D0"); 
    $(this).append($('<button class="promoter" type="button" title="Active promotion"></button>')); 
}).live('mouseleave', function(){ 
    $(this).css("background-color", "#F9FAFA"); 
    $(this).children("button").remove(); 
}); 

.live('hover', function() {})速記作品之類的東西$(this).children().slideToggle()什麼的,但對於這一點,你需要直接使用mouseentermouseleave事件,同樣的事件.hover()實際結合。

+0

gr8它的工作我只需要等待答案被接受。謝謝,你有任何書籍推薦jQuery,如何更好/最終掌握它? – 2010-04-10 20:02:39

+0

@甘道夫 - 我不確定,從來沒有讀過任何...有點了解它,因爲我遇到了我需要的新東西。一位開發人員閱讀了這篇文章,但他學到了很多東西,評論看起來也不錯:http://www.amazon.com/Learning-jQuery-Interaction-Development-JavaScript/dp/1847192505 – 2010-04-10 20:08:35

1

確保您使用的是jQuery 1.4或更高版本和according to the docs,您需要使用mouseenter和mouseleave而不是懸停。