EVAL в jQuery, это правильный путь? - PullRequest
0 голосов
/ 18 сентября 2010

Мне нужно вызвать функцию jQuery с EVAL (но я не знаю, как это сделать), затем я решаю с этим решением, но я не думаю, что это правильный путь ...

<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 с другим именем, по этой причине у кнопки есть имя функции.

Ответы [ 2 ]

2 голосов
/ 18 сентября 2010

Если вы просто хотите вызвать функцию ... вы можете сделать это очень просто:

function (data) {
    jQuery.fn[$(button).attr('myFunction')](data);
};
2 голосов
/ 18 сентября 2010

Вам не нужно eval в этом случае. В JavaScript вы можете использовать точечные обозначения или квадратные скобки. Они имеют в виду одно и то же. Попробуйте эту строку.

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