2013-01-04 256 views
1

可有人請看看這個code,其中每個功能都運行完美,但只有點擊事件(這是最後的代碼)點擊事件

$('ul#showUsernames li').on('click', function() { 
    selectedUsername = $(this).text(); 
    if (selectedUsername != chatUsername) { 
     chatTitleName.text("Chat between " + chatUsername + " and " + selectedUsername); 
    } 
}); 

這裏我用.clickbind('click',function他們也沒有工作。

我在這裏使用on,因爲我通過jQuery生成li元素dynamically

我不確定這是否重要,我在我的項目中使用SignalR。

請幫忙。

+0

可能重複[jQuery - on('click')append似乎不工作](http://stackoverflow.com/questions/14133570/jquery-onclick-append-doesnt-seem-to-work) – Barmar

回答

5

使用事件代表團on()

$('#showUsernames').on('click', 'li', function() { 
    ... 

這也將工作的動態插入列表項,這將是更好的性能(因爲你在你的ul附加一個單一的事件處理程序,而不是ñli元素的處理程序。

一點題外話只是使用$('#showUsernames')而不是$('ul#showUsernames'),因爲它的速度更快(它就像一個直getElementById

+0

這麼快,如此正確:)我應該在六個小時前問過這裏。非常感謝你。 –

+0

很樂於幫助 – fcalderan

2

使用on()

$('ul#showUsernames').on('click', 'li', function() { 
0

可以使用Jquery Live

$('li ul#showUsernames').live('click',function() { 

可以使用也可以作爲活是貶值了(感謝@Mr_Green)

$('ul#showUsernames').on('click', 'li', function() { 
+1

從jQuery 1.7開始,在同一個jQuery實時鏈接中提到的.live()方法已被棄用。 –

0

使用live()

例子:

$(".button").live("click", function() { 
}); 

確保調用die()爲好,像這樣:

$(".button").die(); 

模具()會阻止你的活動從射擊多次。如果您的內容異步加載多次,而沒有同步重新加載整個頁面,則會發生這種情況。這是因爲舊的處理程序保留在瀏覽器內存中,並且它們也被解僱(簡單解釋)。

希望它有幫助。

+1

'live'自jQuery 1.7以來已棄用。應該使用On()來代替 – fcalderan