我正在使用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属性的东西绝对是不寻常的。

10-07 21:10