1

我是 JavaScript 对象的新手,想知道我们是否可以在对象中运行 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];
});

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

4

4 回答 4

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具有值的情况下发生这种情况。

于 2013-05-20T22:05:22.103 回答
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 
    }
});
于 2013-05-20T22:21:52.700 回答
2

你需要使用函数;

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

然后打电话

jsRun[data]();

(注意括号)

于 2013-05-20T22:07:56.727 回答
0

没有在对象运行此代码。

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

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

于 2013-05-20T22:08:25.093 回答