我的表中有大量行,我希望将唯一的颜色选择器(jQuery 插件)附加到由唯一 id 标识的特定列中的每个单元格。鉴于此,我想自动生成颜色选择器的实例,如下所示:
var myrows={"a","b","c",.....}
var mycolours={"ffffff","fcdfcd","123123"...}
for (var i=0;i<myrows.length;i++) {
$("#"+myrows[i]+"colour").ColorPicker({flat: false,
color: mycolours[i],
onChange: function (hsb, hex, rgb) {
$("#"+myrows[i]+"currentcolour").css('backgroundColor', '#' + hex);
}
});
现在这不起作用,因为 $("#"+myrows[i]+"currentcolour") 组件的评估发生在函数调用时,而不是调用时定义(这是我需要的)。
鉴于此插件 javascript 将其代码附加到级别,而不是附加到我上面访问的底层 DOM 组件,因此无法派生出它所属的 id,我如何在期间评估变量> 函数声明/定义?
感谢任何人可以提供的任何帮助/见解。
布莱恩。
最佳答案
你可以这样做:
$.each(myrows, function(i, row) {
$("#"+row+"colour").ColorPicker({flat: false,
color: mycolours[i],
onChange: function (hsb, hex, rgb) {
$("#"+row+"currentcolour").css('backgroundColor', '#' + hex);
}
});
});
$.each()
功能creates a closure ,因此您传入的变量 (row
) 是它自己的副本,其作用域正确地适合您此处所需的内容,而不是 i
末尾的内容for()
循环和您的函数获取该数组的最后一个元素。
关于javascript - 在定义该函数期间评估 jQuery 函数变量值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2746713/