我们可以在对象中运行某些javascript吗?
我不熟悉JavaScript对象,不知道是否可以在对象中运行JavaScript?这就是我想做的-我们可以在对象中运行某些javascript吗?,javascript,jquery,object,Javascript,Jquery,Object,我不熟悉JavaScript对象,不知道是否可以在对象中运行JavaScript?这就是我想做的- $('.element').click(function () { var data = $(this).attr('data-home'); if (data !== undefined) { var jsRun = { a: $('.more').show(), b: $('.div').show(),
$('.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];
});
我编写了returnjsrun,因为我不太确定如果允许的话该怎么做,以及如何让它运行我指定的代码。任何建议都会有帮助,请将所有这些建议都包含在函数中,然后可以将它们作为对象的方法调用
$('.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]();
}
});
假设数据为a,结果显示$'.more'。我已经将调用移到了条件块中,因为我假设您只希望在数据有值时发生这种情况 将所有这些函数都包含在函数中,之后它们可以作为对象的方法调用
$('.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]();
}
});
假设数据为a,结果显示$'.more'。我已经将调用移到了条件块中,因为我假设您只希望在数据有值时发生这种情况 您需要使用函数
a: function(){$('more').show();}
然后打电话
jsRun[data]();
注意括号您需要使用函数
a: function(){$('more').show();}
然后打电话
jsRun[data]();
请注意,括号中没有在对象内运行此代码
$('.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]();
}
});
您正在创建对象之前运行它。这些表达式将返回的任何内容都将被设置到放置表达式的键中
请注意,任何表达式都会返回某些内容,至少是:未定义的您没有在对象内部运行此代码
$('.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]();
}
});
您正在创建对象之前运行它。这些表达式将返回的任何内容都将被设置到放置表达式的键中
请注意,任何表达式都会返回某些内容,至少:未定义的使用开关:
$('.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
}
});
使用开关:
$('.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
}
});
你试过了吗?我认为switch/case更合适,因为OP希望根据data@Asad-我知道它不管用,但与其问它是否管用,不如试试看会发生什么?@adeneo可能不会被否决,这就是switch case的用途。这并不重要,动态元素只需要一个委托事件处理程序,对象或开关将是相同的。您尝试过吗?我认为switch/case更合适,因为OP希望根据data@Asad-我知道它不管用,但与其问它是否管用,不如试试看会发生什么?@adeneo可能不会被否决,这就是switch case的用途。这并不重要,动态元素只需要一个委托事件处理程序,对象或开关将是相同的。另一个选项是使用字符串和eval,但不要这样做。当错误使用时,eval是危险的,并且速度较慢。我只是在你在其他地方找到支持它的建议时才提到它。是的,我听说过eval的拼写,比如邪恶的LOL,有人告诉我,所以我总是偏离它,哈哈,另一个选择是使用字符串和eval,但不要这样做。当错误使用时,eval是危险的,并且速度较慢。我只是在你在其他地方找到支持它的建议的情况下才提到它。是的,我听说了eval的拼写,比如邪恶的LOL,有人告诉我,所以我总是偏离它,哈哈谢谢你,我很惊讶我居然知道在结尾处写回信,哈哈!如果你能相信的话,这是我第一次真正使用return。在接受答案之前,我将尝试一下。你也得到了一张选票@Dave@EasyBB我做了一些小的改变,你可能也想考虑一下。是的,我看到了。我可以看到调用被移动到了条件的内部。但是你能解释一下第3行的变量声明吗?这是成为一个全局变量还是什么?我也不需要放置var jsRun=?@EasyBB当你在一个范围内的任何地方声明一个变量时,JS会自动将它的声明移动到范围的顶部,但不会将它的赋值移动到范围的顶部。因此,函数{alert'hello';var x=foo;}实际上将作为函数{var x;alert'hello';x=foo;}运行。我想我应该把它说得更清楚。谢谢你,我很惊讶我居然知道在结尾写return,哈哈!如果你能相信的话,这是我第一次真正使用return。在接受答案之前,我将尝试一下。你也得到了一张选票@Dave@EasyBB我做了一些小的改变,你可能也想考虑一下。是的,我看到了。我可以看到调用被移动到了条件的内部。但是你能解释一下第3行的变量声明吗?这是成为一个全局变量还是什么?我也不需要放置var jsRun=?@EasyBB当你在一个范围内的任何地方声明一个变量时,JS会自动将它的声明移动到范围的顶部,但不会将它的赋值移动到范围的顶部。因此,函数{alert'hello';var x=foo;}实际上将作为函数{var x;alert'hello';x=foo;}运行。我爱你
好的,我会说得更清楚。哦,好的,谢谢你给我看开关盒是什么。虽然看起来它们的编码行数是一样的。总重量相同。我相信我会坚持客观感觉。除非你有任何其他理由说明我为什么要用这个而不是对象?比如两个的速度。看你已经有两票了;没有投票权,哈哈!谢谢你和我一起工作,给我看这个,我真的很感激!哦,好的,谢谢你给我看开关盒是什么。虽然看起来它们的编码行数是一样的。总重量相同。我相信我会坚持客观感觉。除非你有任何其他理由说明我为什么要用这个而不是对象?比如两个的速度。看你已经有两票了;没有投票权,哈哈!谢谢你和我一起工作,给我看这个,我真的很感激!