我创建了一个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)手动将其添加到我的页脚,幻灯片播放就可以了.
我在最后一小时搜索了这个网站,试图找到一个解决方案,但我找不到任何可以适应我的具体问题的网站. …
我有以下小代码片段,具有以下预期和实际输出.我的问题很简单.为什么按顺序打印呢?以及如何打印预期的输出?
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) 我正在经历如何制作一系列功能装饰器? 了解装饰.
在下面的示例中,我们看到由于闭包,包装函数可以访问"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) 我有一个我想要编辑的项目列表
<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总是包含最后一个修改过的.
如何在成功处理程序中检索当前发布的项目?
以下片段:
a = 0;
function f1() {
a = 1;
f2();
}
function f2() {
return a;
}
f1();
Run Code Online (Sandbox Code Playgroud)
返回undefined.
根据我的理解,函数在定义变量时可以访问变量,并在执行变量时访问这些变量的值.因此,在这种情况下,我会猜到f2可以访问全局变量'a',并读取它的修改值(1).那为什么它未定义?
我得到这个:
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()
注意
仔细查看文档中的每个类,并注意每个细节:)
在没有将它绑定到窗口对象的情况下,实现这样的东西的正确方法是什么?
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闭包如何工作?)
我的问题如下:
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不再是指目标.
我尝试使用闭包进行下一步:
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:数字不是函数
我正在递归地构建一个近似函数(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中进行递归函数构建,除了通过丑陋的引用/解析之外