我使用jscolor这是一个javascript颜色选择器插件(link)。
该文档在css类中使用了javascript。
<input class="jscolor {padding:20, borderWidth:3}">
&#13;
我怎样才能在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">
&#13;
此代码如何仅仅包含类jscolor
来调用插件?
以及document.getElementById('foo').jscolor.show()
如何调用插件?
特别是jscolor.show()
对我没有意义。 jscolor
来自何处。
我尝试在jQuery中复制该代码并且它不起作用!
$(document).ready(function(){
$(button).click(function(){
$('#foo').jscolor.show();
});
});
&#13;
答案 0 :(得分:2)
他们正在使用类定义做一些非常不典型的事情,因此语法似乎模糊不清并不奇怪。但它看起来并不像它。实际上只有三个具有奇怪名称的CSS类:
在他们的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类的一个很好的例子。但是,类属性的东西绝对是不寻常的。
答案 1 :(得分:1)
当使用src标记加载jscolor时,它会使用自执行函数调用自身,该函数在启动时查找DOM中具有类input
的所有button
和jscolor
标记然后向它们添加一个名为jscolor
的属性。当您执行jscolor
onclick="document.getElementById('foo').jscolor.show()"
对象就是您所呼唤的对象
将jscolor对象添加到input
和button
标记的相同逻辑也会查看其余的类数据并解析{padding:20, borderWidth:3}
之类的内容。这就是JavaScript-esque代码在CSS类中的工作方式。
所有这些信息都来自jscolor github页面:https://github.com/EastDesire/jscolor/blob/2.0.4/jscolor.js