【问题标题】:redefine javascript method body重新定义javascript方法体
【发布时间】:2011-05-12 13:33:13
【问题描述】:

我有一个这样定义的 jquery 对话框(此处显示的部分代码)

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

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

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

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

所以在用户点击按钮 A 的伪代码中

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

【问题讨论】:

  • `body (function Opslaan(){})`有什么作用?
  • 对话框被注入了一些文本框。该对话框用于 4 个不同的小杂物屏幕。然后,当用户单击 Opslaan(表示“保存”)时,它必须调用正确的 Save 方法才能解析注入的 html,因为 html 在所有 4 种情况下都不同。因此,Opslaan 方法在 de 对话框中查看 html 并从文本框中获取值,然后创建它的 Web 服务调用。因此,当您单击“Opslaan”按钮时,我想根据 de 对话框中注入的 html 调用该方法的不同实现。这回答了你的问题?
  • 好的,我认为您在每个页面上都有 4 种不同的 opslaan 方法,对吧?有不同的说明?在这种情况下,首先检查 window.Opslaan 是否存在,或者在用户必须单击按钮之前它是否在您的 dom 上,我不知道为什么您不能使用 serialize() 方法来传递您的帖子/获取数据希望帮助一些如果没有,请为每个页面放置一些示例代码或它如何在代码中工作:)

标签: javascript jquery asp.net jquery-ui


【解决方案1】:

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

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,请查找“你的意思是什么?函数也是对象?”。

【讨论】:

    猜你喜欢
    • 2011-09-27
    • 1970-01-01
    • 2021-10-03
    • 2021-12-05
    • 2010-09-13
    • 1970-01-01
    • 2023-03-22
    • 1970-01-01
    • 2012-04-07
    相关资源
    最近更新 更多