我可以在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()
队列中。
答
把准备功能于init方法具有一定的优势:
的页面加载所有的插件,但不需要他们可以很容易地禁用插件。
脚本上准备执行您displayMessage()方法和运行之前你的插件运行就会把displayMessage()早于插件自己准备剧本就绪队列。当就绪事件触发时,按照错误的顺序调用函数。
我实际上使用bind()来动态创建元素。但是如果你想能够检查插件是否被实例化,init就是要走的路。好决定。 – 2010-12-20 18:53:54