为eval函数转义javascript撇号/引用,所以它仍然作为选择器工作?

时间:2014-04-22 14:06:57

标签: javascript jquery eval

Following js code in a jsfiddle:

JS:

function myFunc(foo){
    $(foo).val("magic, it works!... NOT");    
}

var x = "myFunc('input[name=\\'testme\\']')";


eval (x);

HTML:

<input name="testme" type="text" />

有人知道我能做些什么吗?

2 个答案:

答案 0 :(得分:0)

你需要这样:

function myFunc(foo){
    $(foo).val("magic, it works!... NOT");    
}

var x = "(myFunc('input[name=\"testme\"]'))";

eval(x);

()内合并它们。但你还需要考虑这一点。您需要提供 No Wrap(正文)

小提琴:http://jsfiddle.net/praveenscience/243ur/2/

答案 1 :(得分:0)

Don't use eval.

在您的示例中,您传递eval一个常量字符串。这可以简单地用字符串的内容替换。这是所有eval实际上正在做的事情,除了使用eval使JavaScript引擎无法优化您的代码。

您的示例可以替换为:

function myFunc(foo){
    $(foo).val("magic, it works!... NOT");
}

myFunc('input[name=\'testme\']');