2

これは可能ですか?

<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、javascriptステートメントを呼び出すhtmlの場合と同じように機能させたいと思います。

ところで、jQuery.call()はデモンストレーション用であり、機能しません。

4

2 に答える 2

9

あなたは使うでしょうeval()が、あなたがしていることは本当に悪い考えのようです:

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

これが悪い理由は、機能を構造から分離していないからです。HTMLは、対話性や機能ではなく、構造を記述することを目的としています。

JavaScriptは、その相互作用と拡張機能を提供することを目的としていますが、構造を提供することは目的としていません。このようにjQueryをインラインで使用することは、その分離に違反します。ただ考えるための食べ物...

于 2010-01-13T22:05:52.383 に答える
7

新しい関数MDNを使用できます

体:

<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/

それが役に立てば幸い!

于 2013-04-12T18:28:13.767 に答える