我有一个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不能用来选择元素。
试图解决这个问题,我有:
答案 0 :(得分:0)
问题是你是从数字开始,然后组合字母和下划线,它们不是JavaScript的有效ID。
使用document.getElementById('07-06-2015_18:00_detail')
可能会有更好的运气,但仍然不建议使用这些组合。
答案 1 :(得分:0)
您需要使用\\
$("#07-06-2015_18\\:00_detail");
下划线和连字符都可以,不被视为特殊字符
有关详细信息,请参阅jQuery Selectors API
答案 2 :(得分:0)
您的id中的冒号导致问题,因为它实际上用于伪选择器。你必须用反斜杠(实际上有2个)来逃避它。
$('#something\\:else');
对于你的例子:
$("#07-06-2015_18\\:00_detail");