Pergunta

Isso é possível?

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

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

Basicamente eu gostaria de usar um atributo jq em qualquer tag para agir como um onclick no HTML que chama as instruções JavaScript.

btw jquery.call () é para fins de demonstração que não funciona ...

Foi útil?

Solução

Você usaria eval() Mas o que você está fazendo parece uma ideia muito ruim:

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

A razão pela qual isso é ruim é que você não está separando a função da estrutura. O HTML deve descrever a estrutura, não a interatividade e a função.

O JavaScript destina -se a fornecer essa interação e aprimoramento, mas não a estrutura. Usando o jQuery inline como esse é uma violação dessa separação. Apenas comida para o pensamento ...

Outras dicas

você pode usar nova função Mdn

corpo:

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

De uma chance:

http://jsfiddle.net/mslsy/

Espero que ajude!

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top