【问题标题】:Pass arguments to inner anonymous function将参数传递给内部匿名函数
【发布时间】:2015-05-09 05:27:33
【问题描述】:

我尝试在 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()

【问题讨论】:

    标签: jquery wordpress scope closures


    【解决方案1】:

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

    试试这个:

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

    【讨论】:

    • 谢谢。你给了我正确的想法。所以我用解决方案更新了我的问题。
    猜你喜欢
    • 2014-03-05
    • 2018-09-26
    • 1970-01-01
    • 2013-11-30
    • 1970-01-01
    • 1970-01-01
    • 2012-12-24
    • 2015-02-17
    • 1970-01-01
    相关资源
    最近更新 更多