Pregunta

Es esto posible?

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

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

Básicamente me gustaría utilizar un jq atributo en cualquier etiqueta para actuar como un onclick haría en HTML que llama a las sentencias de JavaScript.

por cierto jQuery.call () es para fines de demostración no funciona ...

¿Fue útil?

Solución

Se podría utilizar eval() pero lo que está haciendo que parece ser una muy mala idea:

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

La razón de que esto es malo, es que no se está separando la función de la estructura. HTML está destinado a describir la estructura, no la interactividad y la función.

JavaScript está destinado a proporcionar que la interacción y la mejora, pero no estructura. Usando la línea de jQuery como esa es una violación de esa separación. Sólo para la reflexión ...

Otros consejos

Puede utilizar la nueva función MDN

cuerpo:

<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);

darle una oportunidad:

http://jsfiddle.net/msLsy/

Espero que ayude!

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top