使用数据属性调用对象键

时间:2018-03-26 23:46:41

标签: javascript jquery eval

有更好的方法吗?

HTML

<textarea name="footer_content" id="footer_content" class="form-control" data-editor="simple"></textarea>

使用Javascript / jQuery的

var summernote_config = {
    'simple': {
        height: 100
    },
    'full': {
        height: 200,
        styleTags: ['p', 'h1', 'h2', 'h3', 'h4', 'h5', 'h6']
    }
};
$('[data-editor]').each(function () {
    $(this).summernote(eval('summernote_config.' + $(this).data('editor')));
});

注意我是如何通过summernote_config使用data-editor属性抓取eval值的?

我认为eval可能不是最安全的选择。

1 个答案:

答案 0 :(得分:0)

将属性值获取到变量中,然后使用括号表示法选择属性(允许您使用动态属性名称)而不是点符号:

$('[data-editor]').each(() => {
  const configProp = $(this).data('editor');
  const configVal = summernote_config[configProp];
  $(this).summernote(configVal);
});

或者,更简洁:

$('[data-editor]').each(() => {
  $(this).summernote(summernote_config[$(this).data('editor')]);
});