我们可以在对象中运行某些javascript吗?

时间:2013-05-20 22:03:28

标签: javascript jquery object

我是JavaScript对象的新手,想知道我们是否可以在Object中运行JavaScript?这就是我想要做的 -

$('.element').click(function () {
    var data = $(this).attr('data-home');
    if (data !== undefined) {
        var jsRun = {
            a: $('.more').show(),
            b: $('.div').show(),
            c: window.location = "www.url.com",
            d: location.reload()
        };
    }
    return jsRun[data];
});

我写了返回jsRun因为我不太确定如果允许该怎么做以及如何让它运行我指定的代码。任何建议都会有所帮助

4 个答案:

答案 0 :(得分:5)

将所有这些函数包含在函数中,然后可以将它们作为对象的方法调用。

$('.element').click(function () {
    var data = $(this).attr('data-home'),
        jsRun; //your variable declaration is hoisted to here anyway
    if (data !== undefined) {
        jsRun = {
            a: function(){
               $('.more').show();
            },
            ...
        };
        return jsRun[data]();
    }
});

假设data为“a”,结果是显示$('.more')。我已经在条件块中移动了调用,因为我假设您只希望在data具有值时发生这种情况。

答案 1 :(得分:4)

使用开关:

$('.element').on('click', function() {
    switch ( $(this).data('home') ) {
       case 'a': $('.more').show();
         break;
       case 'b': $('.div').show();
         break;
       case 'c':  window.location = "www.url.com";
         break;
       case 'd':  location.reload();
         break;
       default:
                  goNuts(); // do something if none of the above 
    }
});

答案 2 :(得分:2)

您需要使用功能;

a: function(){$('more').show();}

然后致电

jsRun[data]();

(注意括号)

答案 3 :(得分:0)

在对象 中运行此代码。

您正在运行 对象创建之前。这些表达式将返回的任何内容都将被设置到放置表达式的键中。

请注意,任何表达式都会返回一些内容,至少:undefined