使用JavaScript变量作为jQuery选择器的问题 - 无法识别的表达式

时间:2016-11-11 16:47:33

标签: javascript jquery svg jquery-selectors undo

我尝试使用JavaScript变量作为jQuery选择器来更改SVG路径的填充(实际上,到"撤消"最近对它们所做的更改)。我能够正确访问修改后的最后一条路径,以及"颜色"它充满了,我用console.log()语句对此进行了双重检查。

他们是:

  var path = Object.keys(allChanges[0]).shift();

  var oldFill = Object.keys(allChanges[0]).map(function(key){
    return allChanges[0][key];
  }).shift();

"路径"和#34; oldFill"是他们应该是什么。我试图在这里使用它们作为jQuery选择器:

$("'#"+path+"'").css('fill', "'"+oldFill+"'");

但是我收到错误消息

  

"语法错误,无法识别的表达式:'#node27'" < - #node27是我碰巧定位的路径。

他们在我的svg元素中都有id。

有谁知道我在哪里出错?!我已经看过这一百万次了!

2 个答案:

答案 0 :(得分:3)

撇号有问题。你必须更新这个

$("'#"+path+"'").css('fill', "'"+oldFill+"'");

用这个

$("#"+path).css('fill', oldFill);

答案 1 :(得分:1)

您刚刚遇到引号问题。您的变量已经是字符串,因此您不需要引用它们。

试试这个:

$("#" + path).css('fill', oldFill);