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