转义元字符并将其用作选择器的字符串变量

时间:2014-09-29 06:04:32

标签: javascript jquery

例如

我有var myid="abc xyz"

然后我使用函数转义metachars并获取var x = "#"+escapechars(myid); 评估为#abc\\xyz

现在,当我尝试$(x)时,它没有获得任何元素 但是当我在观察中键入$("#abc\\xyz")时,它会获得元素。 我附上同一场景的截图。

问题是:我想使用变量

选择元素

谢谢。enter image description here

这是我的场景的jsfiddle。 http://jsfiddle.net/9hq4nzvx/3/

1 个答案:

答案 0 :(得分:0)

这个> http://jsfiddle.net/9hq4nzvx/5/解决了这个问题。

当我们使用字符串变量时,我们只需要一个反斜杠而不是2。

函数escapechars现在返回:“#abc \ xyz”,它根据需要获取元素。

var selection ="abc xyz";//this can be anything else comes from an array.
var x = "#"+escapeStr(selection); //"#abc\\\\\ xyz";

$(x).html("<h1>Hii</h1>");//why don't I get element here?
console.log(x);
alert(x);

$("#abc\\ xyz").append("<h2>bye</h2>");

function escapeStr(str) {//escape special chars from selectors
    if (str)
    return str.replace(/([ !"#$%&'()*+,.\/:;<=>?@[\\\]^`{|}~])/g, '\\$1');
    return str;
}