Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/jquery-ui/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Jquery ui jqueryui、JavaScript、param和(可能)闭包_Jquery Ui_Closures - Fatal编程技术网

Jquery ui jqueryui、JavaScript、param和(可能)闭包

Jquery ui jqueryui、JavaScript、param和(可能)闭包,jquery-ui,closures,Jquery Ui,Closures,下面是我的JavaScript示例: function createButtons(idDialog, tab, fn, param) { var btns = new Array(); for (var i = 0; i < tab.length; i++) { btns.push( { text: (tab[i]>0 ? '+':'')+tab[i], click: function(a) { c

下面是我的JavaScript示例:

  function createButtons(idDialog, tab, fn, param) {
    var btns = new Array();
    for (var i = 0; i < tab.length; i++) {
      btns.push( {
        text: (tab[i]>0 ? '+':'')+tab[i],
        click: function(a) {
          console.log(fn);
          console.log(param);
          fn(param);
          $(this).dialog("close");
        }
      });
    };
    btns.push( {
      text: "Close",
      click: function() {
        $(this).dialog("close");
      }
    });
    $(idDialog).dialog('option', 'buttons', btns);
  }
函数创建按钮(idDialog,tab,fn,param){
var btns=新数组();
对于(变量i=0;i0?'+':'')+(制表符[i],
点击:功能(a){
控制台日志(fn);
控制台日志(param);
fn(param);
$(此).dialog(“关闭”);
}
});
};
推送({
文本:“关闭”,
单击:函数(){
$(此).dialog(“关闭”);
}
});
$(idDialog).dialog('选项','按钮',基站);
}
参数:
fn
是一个在我们单击按钮时应调用的函数,
param
是一个应传递给函数的参数

当我使用此代码时,
console.log(fn)
表示
undefined
console.log(param)
表示
undefined
。它不记得参数


我该怎么办?

我已经请JoshNaro回答,但他没有回答,所以他给出的解决方案非常有效:

function createButtons(idDialog, tab, fn, param) {
    var btns = new Array();
    for (var i = 0; i < tab.length; i++) {
      btns.push( {
        text: (tab[i]>0 ? '+':'')+tab[i],
        click: function(a) {
          console.log(fn);
          console.log(param);
          fn(param);
          $(this).dialog("close");
        }
      });
    };
    btns.push( {
      text: "Close",
      click: function() {
        $(this).dialog("close");
      }
    });
    $(idDialog).dialog('option', 'buttons', btns);
  }


createButtons(
    "#Hello",
    ['Save', 'Load'],
    function(parameter) {
        alert(parameter);
    },
    'World'
);
函数创建按钮(idDialog,tab,fn,param){
var btns=新数组();
对于(变量i=0;i0?'+':'')+(制表符[i],
点击:功能(a){
控制台日志(fn);
控制台日志(param);
fn(param);
$(此).dialog(“关闭”);
}
});
};
推送({
文本:“关闭”,
单击:函数(){
$(此).dialog(“关闭”);
}
});
$(idDialog).dialog('选项','按钮',基站);
}
创建按钮(
“#你好”,
[“保存”、“加载”],
函数(参数){
警报(参数);
},
“世界”
);

也许JSFIDLE可以帮助我们帮助您@JoshNaro包括jQueryUICSS似乎让这把小提琴工作起来了:。OP不确定为什么在控制台中看到未定义。我不确定OP对createButtons的调用是什么样的,或者HTML是什么样的。这就是为什么我为《凤凰社》提供小提琴的原因。乔希,它很管用。我的情妇很坏。我可以请你用小提琴作为密码回答吗?这样我就可以检查你的答案是否有效了?非常感谢你!