2012-09-13 49 views
0

我試圖觸發我自己的自定義事件作爲全局事件,以便我的頁面上的任何內容都可以監聽它們並作出反應,但是,對於動態添加的內容,它不起作用。看到我的小提琴在:http://jsfiddle.net/6TMkG/8/Jquery全局事件和動態添加的內容

據我所知,該事件觸發的頁面中的任何元素,jQuery知道有一個處理程序,它似乎並沒有觸發事件的li的即使他們確實有一個處理程序。

任何人都知道如何解決此問題?

回答

1

試試這個

$("#b2").click(function() { 
     //$.event.trigger("randomEvent"); 
     $('li').trigger('randomEvent'); 
    }); 
+0

是的,這確實有效,但是如果我添加更多動態內容,應該通知有關DOM中不是li或高於li的事件的通知。然後我必須在該項目上添加另一個觸發器,而我希望有一個觸發器和任何東西,無論它在哪裏定位DOM,都有一個處理程序獲取事件。 –

-1

對不起,我完全錯過了..我沒有看到你的問題的第一部分..自定義事件..看起來你正在關聯的randomEvent,但你不會觸發該事件時,它是與它..

確保在Document.Ready函數中添加觸發器事件,以便evnet處理程序與元素可用時相關聯。

1

如果您想要全局事件,那麼您可以綁定文檔上的事件處理程序,並在文檔中的任何元素上觸發它。

$(document).on('randomEvent', callback); 

$('ul').click(function() { 
    $(this).trigger("randomEvent"); 
}); 
+0

如何是從處理程序我已經在我的例子,其工作方式不同UL?我希望觸發頁面上任何具有處理程序的內容的事件,在我的示例中爲li:s,這應該是jquery處理全局事件的方式,但它似乎不能很好地處理上/代理/住。 –

+0

@ErikNordenhök關鍵是你需要在文件上聽到事件。 – xdazz

+0

你的意思是像我更新的例子,或者我誤解你? http://jsfiddle.net/6TMkG/11/ 我想我可以做這樣的事情,但爲了讓代碼更有意義,感覺就像我希望處理程序綁定到它所做的那樣的頁面元素。 –