使用eval将变量分配给方法.否则我该怎么做
Using eval to assign a variable to a method. How else should I do it?
我正在使用一个方法来接受元素ID的一部分,并使用它来确定需要传递给方法的url路径。在我的情况下,这是由按钮上的点击事件使用的,该按钮可以连接到多个网格中的任何一个,所以我需要知道我在哪个网格上,才能知道要重新加载什么数据:
jQuery('.reset').click(function(e) {
e.preventDefault();
jQuery('#' + grid_id + '_mnf').toggle();
jQuery('#' + grid_id + '_mnfall > .instance').each(function () {
jQuery(this).removeAttr("checked");
});
var url = eval(grid_id + '_url');
jQuery('#foo').setGridParam({url:url}).trigger('reloadGrid');
});
可能的url被定义为变量,所以我有这样的东西:
var foo_url = url_path + '?input=moduleone¶m=1';
var bar_url = url_path + '?input=moduleone¶m=2';
这意味着在上面的setGridParam方法中,url值将是这些变量之一。如果我只是这么做:
var url = grid_id + '_url'; //note I'm not using eval here
传递给setGridParam的值将不起作用。
如果我不像上面那样使用eval
,url将不起作用。为什么?这是怎么回事?既然"eval是邪恶的",我还应该做什么?
在我看来,在不使用eval的情况下,我传递的url如下:
jQuery('#foo').setGridParam({url:foo_url}).trigger('reloadGrid');
但这失败了,所以这里显然需要eval?
因为我确信这是一种过于死板和笨拙的方法,以防有人想看它(并可能暗示我是怎么做错的?),以下是我如何获得grid_id
:
// ex. id='foo_filter'
var source = $(this).parent().parent().attr('id').split('_');
var parsed_source = source.splice(1, source.length + 1);
grid_id_portion = '';
for (var i = 0; i < parsed_source.length; i++) {
grid_id += parsed_source[i];
if(i < parsed_source.length - 1){
grid_id += '_';
}
}
我看到的一些问题。。。我必须将url定义为每个网格的变量。这很不灵活,是吗?这些url也非常相似,所以定义一堆url似乎效率很低。此外,如果有人制作了一个特殊的代码块来插入,作为我要分解的ID传递给eval
,该怎么办。这可能是个坏消息,是吗?任何关于如何改进这一点的建议都将不胜感激。
使用映射来存储URL,而不是本地变量。
var URLs = {
foo: url_path + '?input=moduleone¶m=1',
bar: url_path + '?input=moduleone¶m=2'
};
jQuery('.reset').click(function() {
//do stuff...
var url = URLs[grid_id];
jQuery('#foo').setGridParam({url:url}).trigger('reloadGrid');
});
相关文章:
- 我想重定向点击,然后更改按钮文本,我该怎么做
- I'我试图在我的网页上动态地上下移动元素.我该怎么做
- 我尝试将引导下拉按钮添加到 但下拉菜单不起作用.我该怎么做
- 我该怎么做才能防止在用户单击后退按钮时出现咆哮消息
- 我该怎么做;仅百分比”;Regex工作
- 我该怎么做[硬编码号码].[函数调用]在Javascript中工作
- 我正在尝试一个接一个地播放一个 mp3 文件(一个作为介绍),但它不起作用.我该怎么做
- 我该怎么做:“按下录制按钮时,按钮将闪烁”
- 我该怎么做才能创建一个永远有效的 HTML 页面
- 我希望我的视频在点击时更改为另一个视频,我该怎么做
- (飞镖)我希望触发两个不同的onclick功能,具体取决于单击时是否选中了单选按钮.我该怎么做
- ReactJS:我该怎么做,我正确地使用这个文本输入组件
- 想将 IMG 更改为链接,我该怎么做
- Facebook:对话框窗口弹出 - 导航离开时,我该怎么做
- jquery/js - 我有一堆值(字符串).我想通过 POST 将其发送到另一个 URL,我该怎么做
- 手风琴我想更改第一个 li 边框半径和最后一个 li 边框半径,我该怎么做请帮助我.
- list.setGrouped(true)DOESN'T工作??我该怎么做
- 我该怎么做?(Chrome扩展)
- 此代码有效,但应该是一个循环.我该怎么做
- 使用eval将变量分配给方法.否则我该怎么做