首先,我已閱讀Stackoverflow上的相關帖子,但仍然卡住了。jQuery - 將處理程序應用於通過插件加載頁面後加載的元素
我有一個使用自定義網格插件加載數據的頁面。該數據需要有一個鏈接來啓動一個模式窗口(使用jqModal插件)。該窗口存在於html中,而不是由某個ajax調用獲取。因此,如果我將事件處理程序附加到頁面html中的鏈接,它可以正常工作。如果我將它應用到由此網格插件創建的鏈接,它不起作用。
下面將上已經存在於HTML,但不是由插件生成的鏈接環節的工作:
$(function() {
var Foo = $('#Foo');
Foo.jqm({trigger: 'a.bar'});
});
我想我明白這是爲什麼,但是我也解決不了問題。 live不會削減它,因爲應該附加的事件是加載,而不是點擊或jQuery 1.3.2允許的其他事件(不能使用版本1.4)。我想bind可能是答案,但我不能得到它的工作,我很確定這只是我沒有「得到它」。
任何建議的讚賞,因爲我已經打了很長時間我的頭。
哦,什麼一個例子,我做了圖如何與動態加載數據做:
$('body').click(function(event) {
if ($(event.target).is('a.bar')) {
$(event.target).toggleClass('baz');
}
});
這將成功添加類「巴茲」的動態加載鏈接「a.someLink」點擊(我想我可以通過這種方式將觸發器類添加到鏈接,但無法弄清楚如何在加載時執行此操作,而不是點擊),但鏈接不會觸發模式窗口,我不知道爲什麼。
編輯:我在自定義網格插件,但對於時添加回調是我用下面把事情的工作:
$('.someclass').animate({opacity: 1}, 2000, function(){
Foo.jqm({trigger: 'a.bar'});
});
的hackish,但它的伎倆在緊要關頭。
在onload觸發回調。在我的情況下,模式內容不是通過Ajax加載的(網格內容不是模式),它已經存在於頁面中,因此不會被觸發。 – Stuart 2010-02-18 18:09:28