标签: closures

wordpress add_action传递变量

我创建了一个Wordpress函数来在任何页面中显示幻灯片.该功能运行良好,我可以添加一个函数调用到我的任何模板页面来显示幻灯片.

样本函数调用: add_slideshow($slideshow_id, $gallery_id, $show_navigation_handles);

我在页脚中硬编了jquery.但是,我想add_action('wp_footer','')在我的main函数中使用jquery添加到页脚,因为每个幻灯片可能有不同的设置(不同的slideshow_id,gallery_id等).

这是我的功能:

function add_slideshow($slider_id, $gal_id, $show_controls){
//get the slideshow images from database and return HTML - A Bit Long to show here but it WORKS!

//add the required script to footer - JavaScript is added to footer but not $slider_id
add_action('wp_footer', function() { 
    echo "<script type='text/javascript'>
        $(document).ready(function(){ 
            $('#" . $slider_id . "').flexslider();
        });
    </script>";
  });  
Run Code Online (Sandbox Code Playgroud)

但是PHP变量$slider_id没有传递给发出的javascript,因此我的页脚输出是:

<script type='text/javascript'>
    $(document).ready(function(){ 
        $('#').flexslider();
    });
</script>
Run Code Online (Sandbox Code Playgroud)

什么时候应该是这样的:

<script type='text/javascript'>
    $(document).ready(function(){ 
        $('#some_id_here').flexslider();
    });
</script>
Run Code Online (Sandbox Code Playgroud)

如果我使用正确的ID(#actual_slideshow_id)手动将其添加到我的页脚,幻灯片播放就可以了.

我在最后一小时搜索了这个网站,试图找到一个解决方案,但我找不到任何可以适应我的具体问题的网站. …

php wordpress closures arguments function

0
推荐指数
1
解决办法
3370
查看次数

javascript函数中的var范围

我有以下小代码片段,具有以下预期和实际输出.我的问题很简单.为什么按顺序打印呢?以及如何打印预期的输出?

GR,

预期结果:

0
1
2
0
1
2
Run Code Online (Sandbox Code Playgroud)

实际结果:

0
1
2
3
3
3
Run Code Online (Sandbox Code Playgroud)

这是代码:

var functions = [];

for (var i=0; i<10; i++) {
  console.log (i);
  functions.push (function () {
    console.log (i);
  });
};

for (var j=0; j<functions.length; j++) {
  functions[j] ();
};
Run Code Online (Sandbox Code Playgroud)

javascript closures scope

0
推荐指数
1
解决办法
416
查看次数

装饰和封闭

我正在经历如何制作一系列功能装饰器? 了解装饰.

在下面的示例中,我们看到由于闭包,包装函数可以访问"method_to_decorate".但是,我不明白参数如何self以及lie包装函数是否可访问.

def method_friendly_decorator(method_to_decorate):
     def wrapper(self, lie):
         lie = lie - 3 # very friendly, decrease age even more :-)
         return method_to_decorate(self, lie)
     return wrapper

class Lucy(object):

    def __init__(self):
        self.age = 32

    @method_friendly_decorator
    def sayYourAge(self, lie):
        print "I am %s, what did you think?" % (self.age + lie)

l = Lucy()
l.sayYourAge(-3)
#outputs: I am 26, what did you think?
Run Code Online (Sandbox Code Playgroud)

python closures decorator python-decorators

0
推荐指数
1
解决办法
301
查看次数

每个和$ .post的闭包

我有一个我想要编辑的项目列表

<form id="mainForm" action="machin_chose">
    <div><input name="field" value="chouchouette" /></div>
    <div class="modified><input name="field" value="trutruc" /></div>
    <div class="modified"><input name="field" value="machin" /></div>
</form>
Run Code Online (Sandbox Code Playgroud)

并在每个修改的项目上发布ajax帖子

$('#mainForm div.modified').each(function () {
    item = $(this);
    $.post(
        $('#mainForm').attr('action')
      , $(this).find(':input').serialize()
      , function (data) {
            item.removeClass('modified');
        }
    });
};
Run Code Online (Sandbox Code Playgroud)

成功发布的项目应该被删除他们的modified课程.
我试图使用一个闭包item来保持当前修改过的闭包.
但由于它是异步的,因此item总是包含最后一个修改过的.

如何在成功处理程序中检索当前发布的项目?

javascript ajax jquery closures

0
推荐指数
1
解决办法
80
查看次数

javascript函数中的词法范围

以下片段:

a = 0;

function f1() {
    a = 1;
    f2();
}

function f2() {
    return a;
}

f1();
Run Code Online (Sandbox Code Playgroud)

返回undefined.

根据我的理解,函数在定义变量时可以访问变量,并在执行变量时访问这些变量的值.因此,在这种情况下,我会猜到f2可以访问全局变量'a',并读取它的修改值(1).那为什么它未定义?

javascript closures scope lexical-scope

0
推荐指数
1
解决办法
115
查看次数

PHP Closure类给出致命错误?

我得到这个:

PHP致命错误:调用未定义的方法Closure :: bind()

我收到错误的行是:

public function bind($signal, $callback)
{

    if (!array_key_exists($signal, $this->_registry))
        $this->_registry[$signal] = array();
    $this->_registry[$signal][] = \Closure::bind($callback, null, 'static'); // here

    return $this;
}
Run Code Online (Sandbox Code Playgroud)

如您所见,我使用手册中Closure::bind()显示的内容.请注意我正在使用(注意斜杠),因为我使用命名空间自动加载,需要通知自动加载器它应该查看系统命名空间.\Closure::bind()

注意

仔细查看文档中的每个类,并注意每个细节:)

php closures

0
推荐指数
1
解决办法
751
查看次数

将变量注入闭包

在没有将它绑定到窗口对象的情况下,实现这样的东西的正确方法是什么?

x = function(fn)
{
    foo = 'bar';
    fn();
}

x(function()
{
    console.log(foo) // error happens here
});
Run Code Online (Sandbox Code Playgroud)

在PHP中,您可以通过"use"指令.

$foo = 'bar';
$fn = function() use($foo)
{
    echo $foo; // bar
}
Run Code Online (Sandbox Code Playgroud)

编辑:我改变了一段代码.我想要实现的是,在闭包中使一个声明的变量可用,而不需要在那里传递它.

foo = 'bar';
console.log(foo) // bar
console.log(window.foo) // bar
console.log(this.foo) // bar
Run Code Online (Sandbox Code Playgroud)

我希望实现相同的效果,另一个对象被绑定为"this".

javascript php closures

0
推荐指数
1
解决办法
1070
查看次数

Javascript关闭冻结增量值的值

我很难理解和使用闭包(是的,我已经阅读了JavaScript闭包如何工作?)

我的问题如下:

for (row = 0; row < 10; row++) {
    for (column = 0; column < 10; column++) {

        var target = $("#" + Data.Row[row].Column[column].ID);

        target.mouseenter(function () {
            var position = CalculatePosition($(this));

            alert("row:" + row + ",column:" + column);

            ...
        });
    }
}
Run Code Online (Sandbox Code Playgroud)

正如您所料,只要目标将鼠标悬停在其上,行和列始终为9.我的问题是,如何冻结行和列的值,以便mouseevent匿名函数可以获得其预期值?我试过做类似的事情

target.mouseenter(function() {}.bind(column));
Run Code Online (Sandbox Code Playgroud)

这似乎只适用于专栏,但当然this不再是指目标.

javascript jquery closures

0
推荐指数
1
解决办法
187
查看次数

在JavaScript中关闭 - 什么是错的?

我尝试使用闭包进行下一步:

function func(number) {
    var result = number;

    var res = function(num) {
        return result + num;
    };
    return res;
}

var result = func(2)(3)(4)(5)(3);
console.log(result); // 17
Run Code Online (Sandbox Code Playgroud)

我需要收到2 + 3 + 4 + 5 + 3 = 17但我收到一个错误:未捕获TypeError:数字不是函数

javascript closures

0
推荐指数
2
解决办法
526
查看次数

在R中累积函数和闭包

我正在递归地构建一个近似函数(adaboost).我想在此过程中创建生成的学习函数(不是直接将近似应用于我的测试数据,而是保留导致它的函数)

遗憾的是,R似乎更新了变量名在使用后很长时间所指的值.

#defined in plyr as well
id <- function(x) {x}

#my first classifier 
modelprevious <- function(inputx, k) { k(0)}

#one step of my superb model
modelf <- function(x) 2*x #for instance

#I update my classifier
modelCurrent <- function(inputx, k) 
                 { modelprevious(inputx, function(res) {k(res + modelf(inputx))})}

#it works
modelCurrent(2,id) #4

#Problem
modelf <- function(x) 3*x
modelCurrent(2,id) #6 WTF !! 
Run Code Online (Sandbox Code Playgroud)

具有相同参数的相同函数返回不同的东西,这非常烦人!

那么如何捕获modelf表示的,以便生成的函数仅依赖于绑定时的参数,而不是某些全局状态?


鉴于这个问题,我不知道如果一个人无法触及局部变量,如何在R中进行递归函数构建,除了通过丑陋的引用/解析之外

closures r

0
推荐指数
1
解决办法
147
查看次数