jquery字符串函数转换

问题描述:

这是可能的吗?jquery字符串函数转换

<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任何标记像在HTML中onclick会调用JavaScript语句。

BTW jQuery.call()是用于演示目的,不工作...

你会使用eval()但你在做什么似乎是一个非常糟糕的主意:

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

的这是不好的原因,你是不是从结构上分离功能。 HTML意在描述结构,而不是交互性和功能。

JavaScript旨在提供交互和增强,而不是结构。像这样内嵌jQuery是违反了这种分离。只是精神食粮......

+0

我不知道我真的明白这一点。我想让jq attrbute携带js/jQuery指令,并将它们解释为如果它被写在

+0

的确,jQuery的吸引力之一就是它可以很容易地编写与HTML很好地分离的代码。将代码放回标记(以及使标记同时无效)似乎不是一个进步。 – bobince 2010-01-13 22:16:22

+0

以及有我的问题...我试图使用ajax与源'example.html'来获取页面,但在example.html如果有一个标记'' 由于安全原因,这总是被阻止......所以这是我唯一能够实现这一点的唯一方法,我猜 – Val 2010-01-13 22:23:22

您可以使用新的功能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/

希望它有帮助!