包含冒号的ID的jQuery选择器

时间:2013-05-01 16:20:09

标签: javascript jquery jquery-selectors escaping

我正在尝试使用jQuery 2.0选择一个元素,其ID包含两个冒号,如下所示:

<div id="container:divobj:1">My Div</div>

我使用双反斜杠来逃避冒号:

alert($("#container\\:divobj\\:1").length());

每次我尝试运行此代码时都会收到错误:

  

对象[object Object]的属性'length'不是函数

我设置了jsFiddle here来说明。

我出错的任何想法?顺便说一下,我无法更改ID命名约定,因为这是在第三方上运行的用户脚本。

2 个答案:

答案 0 :(得分:5)

长度不是方法(它的属性

http://api.jquery.com/length/

alert($("#container\\:divobj\\:1").length);

或者jquery有一个size方法

http://api.jquery.com/size/版本已弃用:1.8

alert($("#container\\:divobj\\:1").size());

http://jsfiddle.net/mohammadAdil/wtfRY/3/

答案 1 :(得分:1)

length 属性不是函数。这是...属性:))

您最终不会像使用函数那样访问带括号的属性。括号实际上是执行函数的内容。

您只需使用.length即可获得元素数量。

另一方面,如果您尝试在末尾没有括号的情况下执行函数,它将只返回函数的定义。

例如:

var a = "STACK OVERFLOW";
console.log(a.toLowerCase); 
// output: function toLowerCase() { [native code] }
console.log(a.toLowerCase());
// output: "stack overflow";