如果它是一个数字或包含数字,jQuery中的this.id将不会获取元素id

我有一堆自动生成的div,它们的id有一个数字。 每当我使用this.id获取id时,它都不会输出任何内容。 但是,当Id仅为文本时,它会正确输出ID。 我怎么能解决这个问题? 一切都有帮助。 谢谢

编辑:

$(".draggable").draggable(); $("*", document.body).click(function (e) { var offset = $(this).offset(); e.stopPropagation(); $("#result").text(this.tagName + " ID:" + this.id + " Coord:" + offset.left + " " + offset.top); $.post("http://localhost/framework/test.php", "id=" + this.id + "&x=" + offset.left + "&y=" + offset.top); }); 

这是违法的代码。 然而,它将获得div的id,而不应用“draggable”类。

  
Im an Image Posted by:Teh_noob Posted on: 9/15/1991
Youtube test Posted by:teh nub Posted on: 9/11/01
Text box Posted by:teh noob Posted on: 8/23/09
TESTTESTTESTTESTTESTTESTTESTTESTTESTTESTTESTTESTTESTTESTTESTTESTTESTTESTTESTTESTTESTTESTTESTTESTTESTTESTTESTTESTTESTTESTTESTTESTTESTTEST

请注意,仅限数字的ID无效。 有关详细信息,请参阅此post 。

简短而甜蜜的是:

ID和NAME令牌必须以字母([A-Za-z])开头,后面可以跟任意数量的字母,数字([0-9]),连字符(“ – ”),下划线(“_”) ,冒号(“:”)和句号(“。”)。

虽然允许使用句号和冒号,但我不推荐它。

如果您必须根据id进行选择,jQuery将会失败,因为它会认为它是一个新的类选择器或filter。

在生成的html中添加一个前缀,如:

 
Im an Image Posted by:Teh_noob Posted on: 9/15/1991

并在java脚本中添加相同的前缀

您正在尝试使用完全覆盖它们的其他子元素获取元素的ID …这就是您没有获得任何ID的原因。

而不是this.id,请尝试e.target.id。 如果你点击flash影片,那么你得到id =“flash”。

http://jsfiddle.net/rzfPP/49/

你也瞄准了错误的元素。