【问题标题】:Creating jquery plugins创建 jquery 插件
【发布时间】:2010-07-29 13:36:36
【问题描述】:

我正在尝试创建一个 jquery 插件来执行 ajax 表分页(即获取数据并在调用时重新创建 tbody。

谁能推荐一个教程来告诉我如何做所有这些事情?我希望遵守以下几点:

1) 插件是使用jquery ui语法
2) 该插件需要在同一页面上的多个表上可用
3)插件需要有自己的方法,追加,替换

这是我坚持的主要事情。

作用域如何工作? IE。如果我有一个通过$('#table1').tPaginate('append'); 调用的函数 此函数必须存储来自 ajax 请求的一些数据, 这是剩余的行。 我在哪里存储这个,按照在线教程,我发现没有明显有效的存储持久变量的地方。

您如何处理错误检查等, 如果你的插件中有什么东西坏了,你如何让里面的其他“功能”知道它。这似乎又回到了范围问题。

【问题讨论】:

标签: jquery jquery-ui jquery-plugins


【解决方案1】:

您可以使用其他答案中描述的预构建网格,但要开始开发 JQuery 插件,这里有一个快速示例脚本:

(function($)
{
  $.tPaginateInternal = {
    Append: function(el) { },
    Replace: function(el) { }
  };

  $.fn.tPaginate = function(arg1) {
    return this.each(function() {
      // Do work here

      $.tPaginateInternal.Append(this);
    });
  };
})(jQuery);

然后您应该可以调用:

$("#table1").tPaginate("append");

一小段代码告诉你的是,你可以:

  1. 创建一个包含插件逻辑的对象 ($.tPaginateInternal)
  2. 创建一个适用于多个元素的插件函数 (return this.each)
  3. 以安全的方式结束插件调用 ((function($)) 等。

这可能是创建插件的基本结构,您只需填写其余部分。希望对您有所帮助。

【讨论】:

    【解决方案2】:

    我相信jQgrid 就是您要找的。​​p>

    项目主页here

    【讨论】:

    • 如果没有 500 美元会很棒;)
    • 不确定你在说什么 500 美元?从下载页面:qGrid 3.7.2 下载(免费,开源包)
    【解决方案3】:

    您的问题似乎围绕着如何使用同一个插件管理与不同表格元素关联的数据以及如何通知外部代码。

    您可以考虑在 jQuery 中使用 .data() 函数在表格元素上存储您想要的任何内容。然后,您连接的任何操作或事件都可以从这些数据中获取以执行它们的操作。我应该注意你可以存储任何你想要的东西,包括稍后执行的函数。

    $('#myTable').data('loadPageFunc', function(pageNumber, pageCount){
       //make ajax call and fill in the table
    });
    
    //later in code
    $('#myTable').data('loadPageFunc')(1, 10);
    

    这只是一个简单的例子,但它可以让你做很多事情。此外,如果您希望在插件代码中的事件通知外部代码,那么您可能需要设置一些回调,这些回调可以作为选项传递给您的插件。

    我希望这会有所帮助。关于跟踪状态,我唯一的另一个想法是使用闭包(引用其范围之外的数据的匿名函数)。闭包保留对数据的引用,您稍后在代码中使用闭包。我不确定这是否真的适合你,但它们对于连接事件代码非常方便,而且你可能已经在 jQuery 中使用过很多闭包。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-12-06
      • 1970-01-01
      相关资源
      最近更新 更多