当在jQuery选择器中传递2个变量时,没有结果,但是当键入相同的字符串输出时,它会

时间:2014-09-15 10:52:43

标签: javascript jquery jquery-selectors

例如:

  

var a =" 1234&#34 ;;

     

var b =" line1 \\\\。5&#34 ;;

现在这行代码:

  

"#" + a + b;

发出此字符串

  

"#1234line1 \\ 5"

当我在选择器中输入它时:

  

$("#1234line1 \\ 5"。)

它显示正确的元素

  

但$("#" + a + b)

提前感谢任何建议

3 个答案:

答案 0 :(得分:2)

我很惊讶它在控制台中工作,id选择器无效。 CSS id selectors cannot start with a digit。但是你可以逃脱它:

var a = "\\31 234"; // \\31 = 1, then you need the space to terminate the escape

var b = "line1\\.5";        // Removed a pair of \\ from this, I assume you
                            // don't have a backslash in the id

$("#" + a + b).html("Found it");

这适用于:Live Example

<div id="1234line1.5"></div>
<script>
  (function() {
    "use strict";

    var a = "\\31 234";

    var b = "line1\\.5";

    $("#" + a + b).html("Found it");
  })();
</script>

如果id中确实有反斜杠,则反斜杠的转义为\5c,您将其作为\\5c字符串文字写入,因此:Live Example

<div id="1234line1\.5"></div>
<script>
  (function() {
    "use strict";

    var a = "\\31 234";

    var b = "line1\\5c \\.5";

    $("#" + a + b).html("Found it");
  })();
</script>

答案 1 :(得分:0)

首先:根据您使用的Doctype,ID可能不包含反斜杠或以数字开头。请先检查一下。

Javascript字符串中的反斜杠表示应转义下一个字符。因此,如果你想在你的名字中使用反斜杠,那么你必须使用反斜杠来逃避它。

如果您编写如下代码:

$('#abc\\\\d')

然后它引用ID为abc\\d的元素(使用它可能是非法的),因为两个反斜杠都被转义。

答案 2 :(得分:-1)

问题不在于id以数字开头,Html 5支持这种ID

问题是你放了4个反斜杠而不是2个

所以不要搜索

#1234line1\.5
你搜索了

#1234line1\\.5

将其更改为

var b = "line1\\.5"; 

它会正常工作