Строка JQuery для преобразования функции - PullRequest
2 голосов
/ 14 января 2010

возможно ли это?

<div id="anything">I will change</div>
<div id="id" jq="$('#anything').css({background: 'red'})"></div>

var x = '$('#id').attr('jq')';
jQuery.call(x);

По сути, я хотел бы использовать атрибут jq для любого тега, чтобы он действовал как onclick для html, который вызывает операторы javascript.

Кстати, jQuery.call () для демонстрационных целей не работает ...

Ответы [ 2 ]

8 голосов
/ 14 января 2010

Вы бы использовали eval(), но то, что вы делаете, кажется очень плохой идеей:

var x = $('#id').attr('jq');
eval(x);

Причина, по которой это плохо, в том, что вы не отделяете функцию от структуры. HTML предназначен для описания структуры, а не интерактивности и функции.

JavaScript предназначен для обеспечения этого взаимодействия и улучшения, но не структуры. Такое использование встроенного jQuery является нарушением этого разделения. Просто пища для размышлений ...

7 голосов
/ 12 апреля 2013

Вы можете использовать новую функцию MDN

корпус:

<div id='MyFunc' func="alert('Hello!');" >On Load raise an Alert</div>

ЯШ:

var myFunc = myFunc || document.getElementById('MyFunc'),
        hello = new Function( myFunc.getAttribute('func'));
    hello.call(this);

попробуй:

http://jsfiddle.net/msLsy/

Надеюсь, это поможет!

...