2010-03-30 89 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