2

我正在尝试使用 jquery 从我的页面中获取一个元素:

元素:

<a href="path" id="form1:ctlName">

我正在尝试获取这样的元素并失败:

$('#form1:ctlName')

虽然这种方式有效:

document.getElementById('form1:ctlName');

问题是我需要只有 jquery 的 .css 属性。

任何人都知道如何使用 jquery 获得控制权?

4

5 回答 5

2

问题出现:在您的选择器中,因为jQuery试图将其解释为选择器的扩展。选择器的冒号的一些用途是伪类,:first或者:last,您可以在此处找到这些选择器扩展的完整列表。

试试这些选择器:

$("[id='form1:ctlName']"); //Method one, encapsulating the id
$("#form1\\:ctlName");     //Method two, escaping the colon

这是一个工作演示

请注意,根据这个答案,调用本机 javascript 方法getElementById(yourId)将比其他方法快 10 倍左右,因此如果性能至关重要,您可能需要考虑使用它。

于 2013-06-02T11:22:21.110 回答
2

这是因为 ':' 在 jQuery 中具有特殊的含义。你应该逃避它。

$('#form1\:ctlName'); // Does not work

显然你应该用两个斜杠来逃避它:

$('#form1\\:ctlName'); // Works
于 2013-06-02T11:23:51.070 回答
2

比其他答案更高效(循环遍历所有元素以检查 ID 属性)是这样的:

$(document.getElementById('form1:ctlName'))

jQuery 只是一个包装 DOM 元素的函数。您可以毫无问题地将 DOM 元素传递给它。

于 2013-06-02T11:30:16.393 回答
1

转义 : 用两个“\”

$('#form1\\:ctlName')

- 有一个“\”,它不起作用。http://jsfiddle.net/m8Vrt/
- 有两个“\”,它可以工作http://jsfiddle.net/eQT6w/1/

于 2013-06-02T11:23:09.473 回答
0

试试这个

<a href="path" id="form1_ctlName">
$('#form1_ctlName')

只需将 : 替换为 _

: 在 jquery 选择器中是受限制的字符检查这个 url

http://api.jquery.com/animated-selector/

于 2013-06-02T11:22:37.380 回答