2010-05-04 22 views
2

我有一個綁定到一個tr標籤來提供這樣的鼠標懸停效果的功能後:(」網格TR‘)。如何綁定到JavaScript事件的DOM改變

$綁定(’的mouseenter 「, function(){ $(this).addClass(」hover「); })。bind(」mouseleave「,function(){ $(this).removeClass(」hover「);});

問題是網格通過ajax加載時發生分頁或過濾等。這導致網格被完全替換,所有的事件綁定失敗。有沒有辦法綁定到一個事件,即使在DOM發生變化時也會自動附加到匹配元素上?

謝謝!

回答

4

$.live是你想要什麼:

$(".grid tr").live("mouseenter", function() { $(this).addClass("hover"); }).bind("mouseleave", function() { $(this).removeClass("hover"); }); 
+1

Boom去炸藥 – Pierreten 2010-05-04 03:18:40

+0

雖然live()將解決問題,但效率非常低。最好掛鉤ajax調用的成功事件,並用新事件更新適用的dom節點 – 2010-05-04 03:24:55

3

請使用.on()從現在開始,爲.live()在jQuery的棄用,因爲它效率低下。

$(".grid tr") 
    .on("mouseenter", function() { $(this).addClass("hover"); }) 
    .on("mouseleave", function() { $(this).removeClass("hover"); });