jQuery插件中的全局变量

Global variables in jQuery plugin

本文关键字:全局变量 插件 jQuery      更新时间:2023-09-26

我正在创建一个jquery插件。在那我使用了一些全局变量CCD_ 1就是其中之一。

一个函数inside an ajax call为我分配了一些值。

 callAjax = function (surl, pselector, pi, rec) {
 $.ajax({
 ..
   success: function (data) {
           $.rmtableparams.recordsCount =10;
    }
  });
  }  

但是,当我尝试在其他函数中访问$.rmtableparams.recordsCount时,它返回0。但奇怪的是,如果i alert anything之前那个it will returns 10是正确的。

如果我的剧本是

alert("hi");
alert($.rmtableparams.recordsCount);

第二个警报将显示10

但如果只有alert($.rmtableparams.recordsCount);,则返回0

我对此感到奇怪。如果有人知道原因,请帮帮我。

分配$.rmtableparams.recordsCount =10;$.ajax请求的success回调中。因此,在ajax调用完成并收到响应之前,不会分配该值。这种情况发生得相当快,所以当您是第一个等待关闭$.rmtableparams.recordsCount: 00时,会收到ajax响应,并处理分配。然后,第二个警报显示新值。

如果忽略第一个警报,则呼叫仍在处理中,$.rmtableparams.recordsCount值尚未更改
就这么简单:AJAX代表异步JavaScript和XML。异步是关键,但经常被忽视。。。

因为$.rmtableparams不存在,所以不能直接设置$.rmtableparams.recordsCount

您首先需要设置$.rmtableparams:

$.rmtableparams = {};

然后继续向对象添加数据:

$.rmtableparams.recordsCount = 10;

请确保正在触发成功回调。在回调中添加一个alertconsole.log来进行检查。