2013-10-31 60 views
0

我對通過jQuery動態加載的一組div s有以下事件處理函數。.hover事件不適用於頁面加載後動態加載的元素

$(document).ready(function() { 
    $('.one span').hover(function() { 
     $(this).animate({ backgroundColor: '#666666', color: '#DDDDDD', marginRight: 5 }, 250); 
    }, function() { 
     $(this).animate({ backgroundColor: '#DDDDDD', color: '#666666', marginRight: 0 }, 250); 
    }); 
}); 

的問題是,這些事件處理程序不被解僱,我懷疑這可能是因爲$('.one span')通過jQuery的頁面加載後,這些元素被加載。

在這種情況下我該怎麼辦?我怎麼能對後來會出現的元素進行某種「後期綁定」?

+0

相關http://stackoverflow.com/questions/14679432/jquery-event-delegation – Blazemonger

+0

你正在加載'.one'和'span'還是隻是'span'?如果你正在加載,'.one'的父母是什麼?答案與事件代表團^^有關。 – 2013-10-31 19:45:13

回答

1

而不是$('.one span').hover(使用委託事件,因爲它被動態添加到DOM。見下文,

$(document).on('mouseenter', '.one span', function() { 
    $(this).animate({ backgroundColor: '#666666', color: '#DDDDDD', marginRight: 5 }, 250); 
}).on('mouseleave', '.one span', function() { 
    $(this).animate({ backgroundColor: '#DDDDDD', color: '#666666', marginRight: 0 }, 250); 
}); 

更換document與執行上面的腳本時存在最接近的容器。

+1

['.on'不能用'hover'](http://api.jquery.com/on/#additional-notes)。你需要分別使用'mouseenter'和'mouseleave'。 http://jsfiddle.net/mblase75/Za7Y3/ – Blazemonger

+0

@Blazemonger謝謝。更新後,將其作爲'mouseenter'和'mouseleave',但是我認爲我在某處看到了'.hover'並將其更改了,但是在API文檔中進行了驗證。 –

相關問題