2013-10-04 101 views
4

我创建简单的提示选项的jQuery插件。我这样做看下面是我的代码。但它不起作用。 下面的代码是单独的js文件。创建jQuery插件

(function($) { 
     $.fn.gettingmessage = function() { 

      var element = this; 

      $(element).load(function() { 

       alertingcontent(); 

       function preventnextpage() { 
        return false; 
       } 

       function alertingcontent() { 
        alert("nicely done"); 
      }); 
     }; 

    })(jQuery); 

我这样

 $(function(){ 
    $("body").gettingmessage(); 
}); 

我不知道如何解决这个任何建议将是巨大的称这个功能 。 JSFIDDLE

感谢

+1

* “'变种元素=此;'” *在插件中,'this'不是元素。这是jQuery * set *,它可能有零个或多个元素。在上面显示的代码中,它并不重要;如果你做了任何不平凡的事情,它会。 –

+0

*“但它不起作用”*“不起作用”不是一个有用的问题描述。不起作用*如何*?你期望发生什么?会发生什么呢?你在控制台看到什么错误? (或者,如果没有,这是有用的信息。) –

+0

第一个问题是,你忘了关'alertingcontent'函数体。使用萤火虫/开发人员工具来捕捉简单的语法错误。 – Tibos

回答

5
  • 首先,你缺少一个右括号。
  • 其次,load()功能不会做,你要搜索的内容,使用ready()代替。

更新代码:

(function($) { 
    $.fn.gettingmessage = function() { 

     var element = this; 

     $(element).ready(function() { 

      alertingcontent(); 

      function preventnextpage() { 
       return false; 
      } 

      function alertingcontent() { 
       alert("nicely done"); 
      } 
     }); 
    }; 

})(jQuery); 

$(function(){ 
    $("body").gettingmessage(); 
}); 

Updated jsFiddle

+1

AFAIK,'ready()'只绑定到'document'来检查DOM何时准备就绪。这里的'load'事件没有什么不妥(这也考虑到了图像,'ready'没有)。 – Johan

+0

我猜问题是'load()'绑定到'body',它已经在执行javascript时加载了。 – zessx

+0

这取决于'body'中的所有资源是否都已加载。考虑'$(窗口).load' VS'$(文件).ready' – Johan