我正在使用jscolor,它是一个javascript颜色选择器插件(link)。
该文档在css类中使用javascript。
<input class="jscolor {padding:20, borderWidth:3}">
如何在javascript中实现呢?我以前没看过
我的另一个问题来自jscolor文档中的以下代码。它用于显示和隐藏插件。
<script src="jscolor.js"></script>
<button onclick="document.getElementById('foo').jscolor.show()">
Show Picker</button>
<button onclick="document.getElementById('foo').jscolor.hide()">
Hide Picker</button>
<p><input id="foo" class="jscolor" value="cc4499">
此代码如何仅通过包含类
jscolor
来调用插件?document.getElementById('foo').jscolor.show()
如何调用插件?特别是
jscolor.show()
对我来说没有意义。 jscolor
来自哪里。我尝试在jQuery中复制该代码,但没有成功!
$(document).ready(function(){
$(button).click(function(){
$('#foo').jscolor.show();
});
});
最佳答案
他们使用类定义做了一些非常不典型的事情,因此语法看起来晦涩难怪。但这并不像看起来那样。实际上只有三个CSS类具有奇怪的名称:
jscolor
{padding:20,
borderWidth:3}
在其js文件中,他们使用正则表达式从其中解析出CSS值,然后以编程方式应用它们(逻辑上,如果元素具有jscolor类,则找到以{
开头并以}
结尾的字符串,除去括号和逗号,并使用空格作为定界符,然后可以使用CSS属性列表)。据推测,他们不想随下载一起发送单独的CSS文件。
关于第二个问题,他们只是将jscolor定义为一个类,具有自己的方法和属性。他们的代码,第977行:
jscolor : function (targetElement, options) {
在其中定义了很多函数调用。其中,在第1046行:
this.show = function () {
drawPicker();
};
这段代码定义了一个称为
show()
的函数。实际上是jscolor.show()
。因此,show()
调用drawPicker()
函数,该函数实际上处理选择器的显示。这意味着它们的show()
方法与您所熟悉的show()
方法完全无关。他们已经定义了自己的。如果您在继续使用它们时自己研究代码,就会开始更加清楚地了解他们的工作。 jscolor类是如何编写JS类的一个很好的例子。但是,class属性的东西绝对是不寻常的。