我可以在jQuery插件的顶部添加ready()吗?

问题描述:

我想写一个插件,遵循jQuery网站的指导原则。我可以在jQuery插件的顶部添加ready()吗?

我也试图将一切都纳入其中,包括创建新的div元素。

这些div需要在准备好的文档上创建,所以我想在这里找出最佳选择。

这是我目前拥有的,它工作正常,但由于某种原因它看起来不正确,即使我看不到任何不应该这样做的地方。

有没有更好的方法来做到这一点?

$(document).ready(function() { 
    var message_bar = "<div id="something"></div>"; 
    $('body').prepend(message_bar); 
}); 

(function($){ 
    $.fn.displayMessage = function(options) { 
    ... 

如果是插件,你应该真的允许插件的用户选择何时初始化它。

我建议创建一个init函数,用户可以显式调用或在插件实例化时隐式调用。

在文档中,您可以规定在文档准备好之前不应该初始化插件...或者您可以编写一些代码来检查文档的状态并将初始化代码添加到ready()队列中。

+0

我实际上使用bind()来动态创建元素。但是如果你想能够检查插件是否被实例化,init就是要走的路。好决定。 – 2010-12-20 18:53:54

把准备功能于init方法具有一定的优势:

的页面加载所有的插件,但不需要他们可以很容易地禁用插件。

脚本上准备执行您displayMessage()方法和运行之前你的插件运行就会把displayMessage()早于插件自己准备剧本就绪队列。当就绪事件触发时,按照错误的顺序调用函数。