javascript - 在定义该函数期间评估 jQuery 函数变量值

标签 javascript jquery function color-picker

我的表中有大量行,我希望将唯一的颜色选择器(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/

相关文章:

JavaScript 游戏和安全

Javascript 井字游戏获胜者检查

javascript - 没有提交的 Github APi

javascript - 使用 getElementsByName 更改文本的值

javascript - 用于 Rocket Chat iframe 身份验证的 NodeJS 应用程序抛出 SyntaxError : Unexpected token (

php - 更新 map 标记而不刷新页面 - 传单

c - 使用指针模拟简单函数的引用传递,但没有输出

c++ - 错误在哪里,为什么这个程序是错误的?

javascript - 获取两个元素之间的所有html

Javascript 验证只允许字符串后跟数字