我正在用Javascript和jQuery编写内部小工具。我以面向对象的方式编写了一个名为ggObj的顶级对象,并通过ggObj.prototype分配了方法。

要使用我的小工具,请包含myGadget.js文件,然后在页面中调用函数makeMyGadget()。我的JS文件如下所示:

var myGG ;

function ggObj = {  // lots of stuff here }
ggObj.prototype = { // more stuff here }

var makeMyGadget = function() {

   myGG = new ggObj();
   myGG.initialize();
   myGG.print(); // write HTML for my gadget to the
                 // browser, a la a HERE DOC
   myGG.doOtherFancyStuff();
}


到目前为止,效果很好。

我的问题是小工具没有像我希望的那样被封装。目前,每页只能有一个小工具(myGG)。更糟糕的是,在我的代码中,我不得不引用特定的对象实例(myGG)。其中的两个示例是:


myShinyRedButton的onClick执行'myGG.submitForm()',然后
做“动画”,我有以下代码行:

this.intervalID = setInterval(“ myGG.pageData(1)”,this.options.animate);


我需要更改什么以正确封装我的代码,以便页面上可以存在多个小工具?

最佳答案

您可能想看看创建一个jQuery插件。

$.fn.MYPLUGINNAME = function() {
  return this.each(function() {
  //your code to manipulate the element here
  //you can use this to refer to a specific instance of an element
  //if you apply the plugin to multiple elements on the page.
 });
}


然后,您可以将MYPLUGINNAME添加到页面上的任何元素。

 $('a').MYPLUGINNAME();


因此,要进行动画处理,您现在可以使用内置的jQuery animation()函数。

有一些在线教程可以提供帮助。像这样:


Creating a plugin
Another tutorial

关于javascript - 每页有多个JavaScript小工具,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/1875693/

10-09 18:43