访问id中带有'::'的元素

时间:2012-06-08 12:55:00

标签: jquery

跟随小提琴:http://jsfiddle.net/Q9sHz/5/

我有<li>,ID为“test1 :: newtest”

当我按下按钮 - 启用'Li Point1'时,<li>元素Li Point1仍然是不可拖动的,但如果我从id中移除::,如同小提琴:http://jsfiddle.net/Q9sHz/6/ 单击按钮时,它变得可拖动。

不允许在ID中使用':'吗?

4 个答案:

答案 0 :(得分:3)

jQuery使用冒号来构建选择器。例如$('.class:checked')$('.class:hidden')

你需要像这样逃避冒号

test1\\:\\:newtest

来自jQuery常见问题解答

  

因为jQuery使用CSS语法来选择元素,所以某些字符被解释为CSS表示法。例如,除了字母,数字,连字符和下划线之外,在首字母(a-z或A-Z)之后的ID属性还可以使用句点和冒号(请参阅W3C基本HTML数据类型)。冒号(“:”)和句点(“。”)在jQuery选择器的上下文中是有问题的,因为它们分别表示伪类和类。

     

为了告诉jQuery从字面上处理这些字符而不是CSS符号,必须通过在它们前面放置两个反斜杠来“转义”它们。

// Does not work
$("#some:id")

 // Works!
$("#some\\:id")

How do I select an element by an ID that has characters used in CSS notation?

答案 1 :(得分:1)

引用the jQuery-FAQ

  

冒号(“:”)和句点(“。”)在jQuery选择器的上下文中是有问题的,因为它们分别表示伪类和类。

     

为了告诉jQuery从字面上处理这些字符而不是CSS符号,必须通过在它们前面放置两个反斜杠来“转义”它们。

如您所见,您必须使用\\来转义jquery-selector中的冒号。见this working example

答案 2 :(得分:1)

工作演示 http://jsfiddle.net/Q9sHz/12/

你需要逃避这些特殊字符\\:\\:才能为你做到这一点。

<强>码

// when button clicked ...
$('#enable').click(function() {
    // also enable li tag with id test1
    $('#test1\\:\\:newtest').draggable('enable');
});

​

答案 3 :(得分:0)

// set draggable functionality to all li tags
$('.myLi').draggable();
// disable all li tags which have the class disable
$('.disable').draggable('disable');

// when button clicked ...
$('#enable').click(function() {
    // also enable li tag with id test1
    $('#test1newtest').draggable('enable');
});