无法在jQueryUI对话框上执行javascript函数

时间:2015-05-04 13:53:43

标签: javascript jquery jquery-ui

我遇到了这个问题。我打开我的jQueryUI对话框窗口,但我需要调用一些额外的功能。关键是,对话框的内容是由AJAX加载的,我也需要使用AJAX加载任何其他内容(我有一些列表,因为列表可能包含大量的项目,我需要拆分它进入页面,进入较小的数据量)这是我的代码:

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

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

当我搜索这个错误时我才发现,jQuery可能会故意阻止任何JS代码,因为某些IE浏览器错误。

有人能帮助我吗?

谢谢!

3 个答案:

答案 0 :(得分:3)

首先放入loadObjects函数声明。

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

你可以(也可能应该)做的是避免这种情况,将loadObjects()的函数定义放入一个单独的JS文件中,然后在使用它之前将该文件包含在页面中。 (当然,主要的例外情况是当您无法在页面中加载JS文件,或者您需要动态生成函数定义时,以及其他罕见的情况。)

答案 1 :(得分:1)

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

    loadObjects(1);        
});

应定义您的功能。一旦你定义了它,就叫它。

答案 2 :(得分:0)

使用jQuery对话框时,首先需要确保已加载内容。为此,您可以在对话框初始化中使用open event处理程序:

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