2010-01-13 7 views
2

est-ce possible?chaîne jquery à la fonction de conversion

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

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

Fondamentalement, je voudrais utiliser un attribut jq sur une étiquette d'agir comme un onclick serait en html qui appelle les déclarations javascript.

BTW jQuery.call() est à des fins de démonstration, il ne fonctionne pas ...

Répondre

8

Vous utiliseriez eval() mais ce que vous faites semble être une très mauvaise idée:

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

Le raison pour laquelle c'est mauvais, vous ne séparez pas la fonction de la structure. HTML est destiné à décrire la structure, pas l'interactivité et la fonction. JavaScript est prévu pour fournir cette interaction et amélioration, mais pas la structure. Utiliser le jQuery inline comme ça est une violation de cette séparation. Juste réflexion ...

+0

Je ne suis pas sûr d'avoir vraiment compris cela. tout ce que je veux que le jq attrbute porte les instructions js/jQuery et les interprète comme s'il était écrit sur un tag ' ceci est toujours bloqué pour des raisons de sécurité ... c'est donc mon seul moyen de le rendre possible. Je suppose que les balises – Val

6

vous pouvez utiliser la nouvelle fonction MDN

corps

:

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

donnent un essai:

http://jsfiddle.net/msLsy/

Espérons que ça aide!

Questions connexes