我正在使用基于
jquery的eyeCon颜色选择器(http://www.eyecon.ro/colorpicker/).
当我点击并拖动鼠标在彩色区域上时,颜色正在改变.但是当我点击彩色区域时,颜色没有被更新.
我挖掘了它的源码,并分别在mousedown和mousemove上调用了两个名为downSelector()和moveSelector()的函数.我刚刚在downSelector()函数中添加了一个moveSelector()函数,该函数传递了自己的ev对象.但它没有工作,并引发以下错误:
未捕获TypeError:无法读取未定义的属性“cal”
这可能是因为mousedown和mousemove的ev对象是不同的.
但是我需要更新mousedown事件的颜色.有什么建议么?
提前致谢 :)
解决方法
在colorpicker.js中,可以从upSelector调用moveSelector,如下所示:
@H_403_17@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,(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;
},
这个小黑客很好:)