按名称调用函数(例如namespace.show)

时间:2013-08-15 14:23:09

标签: javascript jquery

我想根据名称调用名称空间的函数。

也许有些背景:我想要的是,通过 $。mobile.loadPage(inStrUrl,{showLoadMsg:false}); 动态绑定页面,然后根据当前页面调用一个函数在加载的页面内。例如:每个页面都有一个showFilter函数,Event附加到一个main.html页面,该页面应调用当前页面中的匹配函数。

我也尝试了一些解决方案,也有jquery,但没有什么对我有用。

这是我的功能代码:

function namespace() { }
namespace.showFilter = function () {
        alert("Test");
    }

并希望通过其名称“调用”或“调用”它。 这是我至少尝试过的。

$(document).ready(function() {
var fn = window["namespace.showFilter"];
fn();
});

我收到错误 TypeError:fn不是函数

这是一个小提琴http://jsfiddle.net/xBCes/1/

4 个答案:

答案 0 :(得分:2)

您可以通过以下方式调用它:

$(document).ready(function() {
    window["namespace"]["showFilter"]();
});

$(document).ready(function() {
    window["namespace"].showFilter();
});

$(document).ready(function() {
    window.namespace.showFilter();
});

答案 1 :(得分:1)

我发现我必须手动将其设置为窗口。

window.namespace = function() { }
window.namespace.showFilter = function () {
            alert("Test");
};

$(document).ready(function() {
    var fn = window["namespace"]["showFilter"];
    fn();
});

http://jsfiddle.net/xBCes/4/

答案 2 :(得分:0)

像这样:

$(function() {
    window.namespace.showFilter();
});

P.S。我缩短了$(document).ready(...)

答案 3 :(得分:0)

function namespace() {}
    namespace.showFilter = function () {
            alert("Test");
        }


$(document).ready(function() {
    var fn = namespace.showFilter();
    fn();
});

http://jsfiddle.net/xBCes/3/