2010-03-30 31 views
0

我想在模態窗口中設置一個拖放列表。窗口的內容通過AJAX調用加載,所以我相信我需要使用jQuery的.live()方法。從AJAX(jQuery)模式窗口加載時的綁定元素

這裏是我當前的代碼:

$('#cboxLoadedContent').live('load', function() { 
    // Event for sortable page lists 
    $('ul#pageList').sortable(); 
}); 

我如何設置綁定的模式窗口加載時?模式窗口來自colorbox插件。

注意:我猜'load'不適合使用,因爲如果我在其中放入一個簡單的alert(),它甚至不會在窗口加載時顯示。

回答

1

在你的情況,只需撥打元素.sortable()當你通過AJAX加載它們,就像這樣:

$.ajax({ 
    url: 'page.html', 
    //stuff... 
    success: function(data) { 
    //Put stuff in DOM 
    $('ul#pageList').sortable(); 
    } 
}); 

對於爲什麼部分:.live()不以這種方式工作,它不不等待新的元素並且執行任何事情......它會監聽來自DOM的元素的事件,然後執行事件處理程序(如果它有一個匹配的選擇器)。

+0

啊,我不得不將.sortable()綁定添加到Colorbox的'onComplete:'屬性。感謝您解釋爲什麼'.live()'也沒有完成這項工作。這清理了很多! – 2010-04-01 04:40:25

0

這取決於您使用的模式窗口。

如果您使用的是jQuery UI dialog,則可以使用opendialog事件。

因此,您可以將一個函數綁定到該對話框打開時觸發的事件。

$(".selector").bind("dialogopen", function(event, ui) { 
    ... 
}); 

如果不使用jQuery UI,你必須去的代碼,如果彈出打開時被觸發一些事件看。

+0

不幸的是,這不起作用。我不得不將綁定添加到我的Colorbox的'onComplete'屬性中。 – 2010-04-01 04:41:09