在jQuery中EVAL,这是正确的方法吗?

时间:2010-09-17 23:55:51

标签: javascript jquery function eval call

我需要用EVAL调用一个jQuery函数(但我不知道怎么做),然后我用这个解决方案来解决,但我不认为这是正确的方法......

<script>
jQuery.fn.customfunction = function (data) { alert( data ); }
</script>

<div id="eval_div"></div>
<form><input role="button" myFunction="customfunction"/></form>
<script>
$('[role=button]').click( function() {
var button = this;
$.post( "/action",
        $(form).serialize(),
        function (data) {
            $('#eval_div').html( "<script>" + $(button).attr('myFunction')  + "('" +  data   + "');</script>" );
        } );
});
</script>

customfunction是每个表单的通用函数,每个表单都有不同的CUSTOMFUNCTION,具有不同的名称,因此,该按钮具有该函数的名称。

2 个答案:

答案 0 :(得分:2)

在这种情况下你不需要eval。在JavaScript中,您可以使用点表示法或方括号。他们的意思是一样的。试试这一行。

$('#eval_div').html(jQuery.fn[$(button).attr('myFunction')](data));

答案 1 :(得分:2)

如果您只想调用该功能......您可以非常简单地执行此操作:

function (data) {
    jQuery.fn[$(button).attr('myFunction')](data);
};