jQuery无法从id中选择我的元素

时间:2015-07-19 02:42:13

标签: jquery razor

我有一个div,请注意id

<div class="@ViewHelpers.StatusToCSSClassString(detail.Status) calendar-detail @String.Format("{0:MM-dd-yyyy}_detail", Model.Date)" id="@String.Format("{0:MM-dd-yyyy}_{1}_detail", Model.Date, detail.StartTime.ToString(@"h\:mm"))">

位于@detail视图对象的foreach循环(Razor)内。这些div的html呈现如下(显然id正确呈现):

<div class="selected-regular-time calendar-detail 07-06-2015_detail" id="07-06-2015_18:00_detail">

这是作为局部视图呈现的。在父视图中,我有以下jQuery:

$(document).ready(function () {

    var myElement = $("#07-06-2015_18:00_detail");
    console.log(myElement);
}

我可以在日志中看到该元素为空length == 0

但是,如果我尝试用另一个方法选择这个元素 - 使用附近元素的closest(),它实际上是有效的 - 并且用控制台记录元素会显示正确的id,即我的id不能用来选择元素。

试图解决这个问题,我有:

        
  • 确保所有内容都在document.ready
  • 中     
  • 三重检查了id名称 - 甚至复制了生成的html
  •     
  • 尝试使用nearest()函数从代码中的另一个点选择此元素 - 这实际上与提到的一样
  •     
  • 在生成的html中搜索了该页面,并确保没有其他具有相同ID的元素

3 个答案:

答案 0 :(得分:0)

问题是你是从数字开始,然后组合字母和下划线,它们不是JavaScript的有效ID。

使用document.getElementById('07-06-2015_18:00_detail')可能会有更好的运气,但仍然不建议使用这些组合。

答案 1 :(得分:0)

您需要使用\\

转义jQuery选择器中的特殊字符
$("#07-06-2015_18\\:00_detail");

下划线和连字符都可以,不被视为特殊字符

有关详细信息,请参阅jQuery Selectors API

答案 2 :(得分:0)

您的id中的冒号导致问题,因为它实际上用于伪选择器。你必须用反斜杠(实际上有2个)来逃避它。

$('#something\\:else');

对于你的例子:

$("#07-06-2015_18\\:00_detail");