将参数传递给内部匿名函数
Pass arguments to inner anonymous function
我尝试在 WordPress 中创建一个功能,以使用 JS 添加自定义程序颜色设置。
我的函数是:
function customize_color(id,selector,prop){
wp.customize(id, function(value) {
value.bind(function(to) {
$(selector).css({
prop:to
});
});
})
}
我想这样称呼它:
customize_color('body_background','body','background')
通过调试器,我注意到在 function(to)
内部我可以使用外部函数的 selector
参数。但是 prop
在那里无法访问。
据我所知,它适用于闭包。但是 selector
不应该在内部函数中可见。
有人能说说它为什么在那里吗?
也许如何编辑它才能访问 prop
?
编辑
感谢 Tim Vermaelen,我理解并记住了 {prop:to}
将使用 prop
键创建一个对象(而不是 'background'
属性 作为键)。
调试器还说 "Error: Variable has been optimized out" 对于 prop
变量。
我删除了 {prop:to}
部分,可以从内部函数的调试器中看到这个变量。
所以问题不是因为闭包...
我发现从字符串变量创建对象键的正确方法是下一个:
var rules={}
rules[prop]=to
$(selector).css(rules);
因此我可以将对象传递给 .css()
我认为问题出在您使用 .css()
函数的方式上。
您可以使用对象文字传递属性和值的集合,这就是您所做的。或者您可以传递一个带有值的 属性。这两个选项需要一些不同的语法。
试试这个:
$(selector).css(prop, to);
我尝试在 WordPress 中创建一个功能,以使用 JS 添加自定义程序颜色设置。
我的函数是:
function customize_color(id,selector,prop){
wp.customize(id, function(value) {
value.bind(function(to) {
$(selector).css({
prop:to
});
});
})
}
我想这样称呼它:
customize_color('body_background','body','background')
通过调试器,我注意到在 function(to)
内部我可以使用外部函数的 selector
参数。但是 prop
在那里无法访问。
据我所知,它适用于闭包。但是 selector
不应该在内部函数中可见。
有人能说说它为什么在那里吗?
也许如何编辑它才能访问 prop
?
编辑
感谢 Tim Vermaelen,我理解并记住了 {prop:to}
将使用 prop
键创建一个对象(而不是 'background'
属性 作为键)。
调试器还说 "Error: Variable has been optimized out" 对于 prop
变量。
我删除了 {prop:to}
部分,可以从内部函数的调试器中看到这个变量。
所以问题不是因为闭包...
我发现从字符串变量创建对象键的正确方法是下一个:
var rules={}
rules[prop]=to
$(selector).css(rules);
因此我可以将对象传递给 .css()
我认为问题出在您使用 .css()
函数的方式上。
您可以使用对象文字传递属性和值的集合,这就是您所做的。或者您可以传递一个带有值的 属性。这两个选项需要一些不同的语法。
试试这个:
$(selector).css(prop, to);