将参数传递给内部匿名函数

时间:2015-03-07 18:42:44

标签: jquery wordpress scope closures

我尝试在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'属性作为键)。
此外,调试器说"错误:变量已针对prop var进行了优化" 。 我删除了{prop:to}部分,可以从内部函数中看到调试器中的这个变量 所以问题不在于封闭......

我发现从字符串变量中创建对象键的正确方法是下一步:

var rules={}
rules[prop]=to
$(selector).css(rules);

因此我可以将对象传递给.css()

1 个答案:

答案 0 :(得分:0)

我认为问题在于您使用.css()功能的方式。 您可以使用对象文字传递属性和值的集合,这就是您所做的。或者您可以传递具有值的单个属性。这两个选项都需要一些不同的语法。

试试这个:

$(selector).css(prop, to);