如何创建一个非常基本的'插件'
How to create a very basic 'plugin'?
Fiddle!
我正在尝试创建一个非常基本的"插件",如果你能这么称呼的话。我希望能够使用这行var box = new colorBox(node, options);
(在JS的末尾)来编辑div#thing1
的样式。我想我的问题是调用我设置的函数。我不想必须调用colorBox.setSize()
才能获得初始效果,但如果我想的话,我希望在colorBox原型的对象设置好后能够稍后调用它。谢谢
HTML:
<div id="thing1"></div>
<div id="thing2"></div>
JS:
var colorBox = {
setSize: function(){
node.style.width = options.width + 'px';
node.style.height = options.height + 'px';
},
setColor: function(){
node.style.backgroundColor = options.color;
},
setSize(),
setColor()
}
var node = document.getElementById('thing1');
var options = {
color: 'red',
width: 200,
height: 200
}
var box = new colorBox(node, options);
使用构造函数创建一个新对象:
var colorBox = function(node, options) {
this.setSize = function(){
node.style.width = options.width + 'px';
node.style.height = options.height + 'px';
};
this.setColor = function(){
node.style.backgroundColor = options.color;
};
this.setSize();
this.setColor();
}
var node = document.getElementById('thing1');
var options = {
color: 'red',
width: 200,
height: 200
}
var box = new colorBox(node, options);
小提琴:http://jsfiddle.net/e7gX8/1/
您缺少一个用于设置所传递值的构造函数。以下是如何做到这一点:
var colorBox = function(node, options) {
this.setSize = function(){
node.style.width = options.width + 'px';
node.style.height = options.height + 'px';
};
this.setColor = function(){
node.style.backgroundColor = options.color;
};
this.setSize();
this.setColor();
}
试试这个小提琴
您正在混合使用不同的方法在javascript中创建对象。你想要的可能就是林赫德利的答案。这是另一种方式(或者更确切地说是其他方式中的一种),它也会起作用,但不必要地复杂,并且只允许您拥有一个colorBox
(但在其他情况下了解它可能会很有用)。
var colorBox = {
setSize: function(){
this.node.style.width = this.options.width + 'px';
this.node.style.height = this.options.height + 'px';
},
setColor: function(){
this.node.style.backgroundColor = this.options.color;
},
initialize: function(node, options) {
this.node = node;
this.options = options;
this.setSize();
this.setColor();
}
}
var node = document.getElementById('thing1');
var options = {
color: 'red',
width: 200,
height: 200
}
colorBox.initialize(node, options);
相关文章:
- 如何在elfinder插件(一个文件管理器插件)上获得上传前事件
- 如何为jQuery屏蔽输入插件创建一个允许字母数字、空格和重音字符的掩码
- 是否可以在尚未附加到DOM的元素中创建一个sparkline(使用jquery.sparkline插件)
- 正在寻找一个插件来创建平面图
- 有没有一个插件可以从特定的页面/帖子中排除一些JavaScripts
- 在jquery的另一个文件上浏览jquery插件
- 在Firefox restartless插件中,当一个新窗口打开时,我如何运行代码(监听窗口打开)
- 如何在jQuery插件中创建一个公共方法
- 如何制作一个具有多个选择器的jQuery插件,在每个选择器上分别进行匹配
- 我该如何为video.js制作一个插件,在HTML标题中添加和删除三角形
- 如何在 elfinder(一个 jquery 文件管理器插件)中只显示文件夹列表
- 插件总是只得到最后一个实例,如何让它适用于多个元素
- 我想在混合移动应用程序中使用Sqlite插件(Cordova)创建一个示例项目
- 在编写jQuery插件进行外部Ajax调用时,这是一个坏主意吗?
- module.exports一个jQuery插件
- 有没有一个jquery marquee插件/脚本可以处理不同宽度的图像
- 如何在没有外部插件的情况下在jQuery中制作一个滚动动画
- 正在寻找一个类似于facebook的文本区域大小调整插件
- Fadein DIV与jquery和航点插件一个接一个
- 禁用美国地图插件(一个JQuery插件)