2015-05-04 39 views
0

我有这个问题。我打开我的jQueryUI对话窗口,但我需要调用一些额外的功能。重点是,对话框的内容由AJAX加载,我也需要使用AJAX加载任何其他内容(我有一些类型的列表,因为列表可能包含大量的项目,我需要分割它成为更小的数据)这里是我的代码:无法在jQueryUI对话框上执行javascript功能

<script type="text/javascript"> 
    $(function() { 
     loadObjects(1); 
    }); 
    var loadObjects = function(page) { 
     // do something 
    }; 
</script> 

我的控制台告诉我? TypeError:'loadObjects'不是函数。但是当我尝试在jQueryUI对话框中(而不是在平面页面上)运行此代码时,显然没有问题。

当我GOOGLE了这个错误,我只发现,jQuery可能会故意阻止任何JS代码,因为一些IE浏览器的错误。

任何人都可以帮助我吗?

谢谢!

回答

3

首先放置loadObjects函数声明。

<script type="text/javascript"> 
    var loadObjects = function(page) { 
     // do something 
    }; 
    $(function() { 
     loadObjects(1); 
    }); 
</script> 

你可以(并且可能应该)做什么,以避免这是将函数定义loadObjects()到一个单独的JS文件,然后包括页文件中,您从它使用的任何东西之前。 (主要的例外,当然是当你无法加载页面JS文件,或者当你需要动态生成函数的定义,其中包括罕见的情况。)

+0

非常感谢!完全帮助切换定义(首先定义函数loadObjects然后定义jQuery $(function(){})。我实际上不希望这些简单的JS函数在单独的文件中。我有很多对话框和单独的模式视图文件会有点混乱,同时保留所有的内容,但再次感谢! – Mikec007

1
$(function() { 
    var loadObjects = function(page) { 
    // do something 
    } 

    loadObjects(1);   
}); 

你的函数应被定义。一旦你定义它,就调用它。

0

当你使用jQuery对话框时,你首先需要确保内容被加载。要实现这一点,您可以在对话框初始化中使用open event处理程序:

$(".selector").dialog({ 
    open: function(event, ui) { 
     var loadObjects = function(page) { 
     // do something 
     }; 
     $(function() { 
     loadObjects(1); 
     }); 
    } 
}); 
+0

谢谢,但实际上我不能这样做。我有很多对话框的模态视图,所以我想这个定义到所有视图。无论如何谢谢你! – Mikec007