2013-10-30 187 views
4

我使用拾色器从http://jscolor.com/使用动态输入

jscolor.js我试图将其连接到一些动态的投入,但无济于事。就动态输入而言,在页面加载时输入不存在,只有在用户点击某些输入后才可用。例如,我有一行数据,每行都有不同的背景颜色。这行数据使用ajax加载。在每行的末尾,有一个编辑按钮。通过单击编辑按钮,它将显示点击行的输入文本框。我想在用户点击输入文本框时调用jscolor选择器。我怎样才能做到这一点?

感谢

回答

2

帮我

<script> 
$(document).on('click', '#myPickerId', function() { 
    var obj = $(this)[0]; 
    if (!obj.hasPicker) { 
     var picker = new jscolor.color(obj, {}); // 
     obj.hasPicker = true; 
     picker.showPicker(); 
    } 
});  
</script> 

在我的情况下,机械手控制是动态的,因为它是内部Knockout.js“与”隐藏了,并重新创建选择器时,它需要声明。

+0

什么'$点(本)[0]'?这不就是没有任何收益而返回这个“这个”吗? – Carcigenicate

+0

@Carcigenicate我认为这是因为'$(this)[0]'返回一个数组,'jscolor'需要实际的div元素。 – iled

+0

$(this)[0]获取实际的DOM元素,而不是jQuery的元素。 – aizquier

4

我只是有这个问题,但幸运的是它很容易修复。你需要(重新)初始化jscolor你动态创建后您的输入:

jscolor.init() 
+0

最简单的解决方案,只是我们厌倦了在您生成输入时调用它,因为它可能会减慢速度。 –

+2

这不适用于我,我得到一个错误,说jscolor.init不是一个函数:/请详细说明,如果有人知道现在如何工作,那么我重置jscolor并再次加载脚本与Jquery ... window.jscolor =未定义; $ .getScript(“../ Scripts/jscolor.min.js”,function(){ }); – mathkid91

15

出于某种原因jscolor.init()对我没有工作,看着我叫

jscolor的代码。 installByClassName( “jscolor”);

功能。

所以......

$(document).ready(function() { 
    jscolor.installByClassName("jscolor"); 
}); 

希望它可以帮助

+3

这对我来说也是如此。 –

+0

很好..谢谢 –

+0

非常感谢你 – Ali7091