从AJAX(jQuery)加载模态窗口时的绑定元素

我想在模态窗口中设置一个拖拽列表。 窗口的内容是通过AJAX调用加载的,所以我相信我需要使用jQuery的.live()方法。

这是我目前的代码:

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

如何加载模态窗口时如何设置绑定? 模态窗口来自colorbox插件。

注意:我猜测'load'不是正确的事件,因为如果我在那里抛出一个简单的alert() ,它甚至不会在窗口加载时出现。

在你的情况下,当你通过ajax加载元素时,只需在元素上调用.sortable() ,如下所示:

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

对于为什么部分: .live()不能以这种方式工作,它不等待新元素和做事……它从冒泡DOM的元素中侦听事件然后如果它有选择器则执行事件处理程序匹配。

这取决于您使用的模态窗口。

如果您使用的是jQuery UI对话框 ,则可以使用opendialog事件。

因此,您可以将函数绑定到对话框打开时触发的事件。

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

如果您没有使用jQuery UI,则必须转到代码并查看弹出窗口打开时是否触发某个事件。