重新定义javascript方法体

时间:2011-05-12 13:33:13

标签: javascript jquery asp.net jquery-ui

我有一个jquery对话框,其定义如下(此处显示的部分代码)

 buttons: {
                    "Opslaan": function() {
                        Opslaan();
                        $(this).dialog("close");
                    },
                    "Annuleren": function() {
                        $(this).dialog("close");
                    }
                }

De Opslaan()函数定义为空体(function Opslaan(){})。

现在从各个地方打开对话框,所以我想在打开对话框时定义Opslaan()方法的主体,因为它必须在对话框中保存数据,但是会在那些不同的地方,所以Opslaan(保存)方法必须一直与我不同。

我想到的一件事是当我打开它时将实际方法传递给对话框(所以用传递的方法替换静态opslaan();调用),但我不知道是否可能< / p>

因此,当用户点击按钮A

时,在伪代码中
  • 获取对话框的HTML
  • 重新定义方法A(将正确的javascript放入正文或让Opslaan方法指向方法OpslaanA()
  • 打开对话框

1 个答案:

答案 0 :(得分:0)

将唯一函数作为泛型函数的参数传递是处理此问题的好方法。这是一个简单的演示:

var save = function(saveFunction) {
    saveFunction();

    // common code 
    alert('common code');
}

var aSaveFunction = function() {
    alert('aSaveFunction Called.');
};

$('#one').click(function() {
    save(aSaveFunction);
});

var aDifferentSaveFunction = function() {
    alert('aDifferentSaveFunction Called.');
};

$('#two').click(function() {
    save(aDifferentSaveFunction);
});

或者看看行动中的小提琴:http://jsfiddle.net/peteorpeter/7H3mm/3/

此外,有关javascript函数作为对象的更多信息:http://www.sergiopereira.com/articles/advjs.html,请查找“你是什么意思?函数也是一个对象?”。