从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,则必须转到代码并查看弹出窗口打开时是否触发某个事件。