Вопрос

Это возможно?

<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() предназначен для демонстрационных целей, он не работает...

Это было полезно?

Решение

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

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

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

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

Другие советы

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

тело:

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

js:

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

попробуйте:

http://jsfiddle.net/msLsy/

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

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top