我使用拾色器从http://jscolor.com/使用动态输入
jscolor.js我试图将其连接到一些动态的投入,但无济于事。就动态输入而言,在页面加载时输入不存在,只有在用户点击某些输入后才可用。例如,我有一行数据,每行都有不同的背景颜色。这行数据使用ajax加载。在每行的末尾,有一个编辑按钮。通过单击编辑按钮,它将显示点击行的输入文本框。我想在用户点击输入文本框时调用jscolor选择器。我怎样才能做到这一点?
感谢
我使用拾色器从http://jscolor.com/使用动态输入
jscolor.js我试图将其连接到一些动态的投入,但无济于事。就动态输入而言,在页面加载时输入不存在,只有在用户点击某些输入后才可用。例如,我有一行数据,每行都有不同的背景颜色。这行数据使用ajax加载。在每行的末尾,有一个编辑按钮。通过单击编辑按钮,它将显示点击行的输入文本框。我想在用户点击输入文本框时调用jscolor选择器。我怎样才能做到这一点?
感谢
帮我
<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“与”隐藏了,并重新创建选择器时,它需要声明。
我只是有这个问题,但幸运的是它很容易修复。你需要(重新)初始化jscolor你动态创建后您的输入:
jscolor.init()
最简单的解决方案,只是我们厌倦了在您生成输入时调用它,因为它可能会减慢速度。 –
这不适用于我,我得到一个错误,说jscolor.init不是一个函数:/请详细说明,如果有人知道现在如何工作,那么我重置jscolor并再次加载脚本与Jquery ... window.jscolor =未定义; $ .getScript(“../ Scripts/jscolor.min.js”,function(){ }); – mathkid91
出于某种原因jscolor.init()对我没有工作,看着我叫
jscolor的代码。 installByClassName( “jscolor”);
功能。
所以......
$(document).ready(function() {
jscolor.installByClassName("jscolor");
});
希望它可以帮助
什么'$点(本)[0]'?这不就是没有任何收益而返回这个“这个”吗? – Carcigenicate
@Carcigenicate我认为这是因为'$(this)[0]'返回一个数组,'jscolor'需要实际的div元素。 – iled
$(this)[0]获取实际的DOM元素,而不是jQuery的元素。 – aizquier