1

我正在尝试运行存储在数据属性中的 javascript 函数。

例如

<form data-success="test">...</form>

$('form').on('submit', function(e){
    e.preventDefault();
    var successFunction = $(this).data('success');

    // Run success function here
});

function test(){
    alert('run');
};

这是可能的还是有更好的解决方案?

4

1 回答 1

1

为什么首先将应用程序逻辑存储在 DOM 中?为什么不将函数存储在 JavaScript 中的后备业务逻辑中?

被证明是一个可维护性问题。不要这样做,而是将您的函数存储在代码中,并将演示文稿的逻辑与其运行时发生的事情分开

简单的方法是对表单进行分类并相应地运行函数,更好的方法可能是使用类似 MV* 模式的东西,但我们不要分歧。这是我能想到的不存储数据属性的最简单的解决方案。这仍然不能正确分离关注点,但它比数据属性简单得多。

...

带有 jQ​​uery 的 JavaScript:

/now we select by class, and not just any form
$('.successForm').on('submit', function(e){
    e.preventDefault();
    test();
});

function test(){
    alert('run');
};

也就是说,可以做到。eval($(this).data("success"))- 请要这样做,这一点只是为了完整性

于 2013-09-19T17:04:56.600 回答