我是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因为我不太确定如果允许该怎么做以及如何让它运行我指定的代码。任何建议都会有所帮助
答案 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