我正在使用基于jquery的eyeCon颜色选择器(http://www.eyecon.ro/colorpicker/)。
当我单击并将鼠标拖到彩色区域上时,颜色会发生变化。但是,当我点击彩色区域时,颜色不会更新。
我挖掘了它的源代码,发现了两个名为downSelector()和moveSelector()的函数分别在mousedown和mousemove上调用。我刚刚在downSelector()函数上添加了对moveSelector()的调用,传递了自己的ev对象。但它不起作用并抛出以下错误: 未捕获的TypeError:无法读取未定义的属性'cal'
可能是因为mousedown和mousemove的ev对象不同。
但我需要更新mousedown事件的颜色。有什么建议吗?
提前感谢:)
答案 0 :(得分:19)
在colorpicker.js中,您可以像这样从moveSelector
拨打upSelector
:
moveSelector = function (ev) {
change.apply(
ev.data.cal.data('colorpicker').fields.eq(6)
.val(parseInt(100*(150 - Math.max(0,Math.min(150,(ev.pageY - ev.data.pos.top))))/150, 10))
.end().eq(5).val(parseInt(100*(Math.max(0,Math.min(150,(ev.pageX - ev.data.pos.left))))/150, 10))
.get(0),[ev.data.preview]
);
return false;
},
upSelector = function (ev) {
moveSelector(ev);
fillRGBFields(ev.data.cal.data('colorpicker').color, ev.data.cal.get(0));
fillHexFields(ev.data.cal.data('colorpicker').color, ev.data.cal.get(0));
$(document).unbind('mouseup', upSelector);
$(document).unbind('mousemove', moveSelector);
return false;
},
这个小小的黑客行得很好:)