这是一个奇怪的...
页面加载后,以下内容正在进行。 我试图将一个类添加到已知的(我知道元素的id)DOM元素。
$('#day-08-07-2016').addClass('active')
由于选择器是Id,页面上只有一个元素,我不能使用[0]或first()函数。
最终,以下情况不起作用!
Xcode 8
答案 0 :(得分:2)
您找不到该元素,因为$('#day-08-07-2016')
查找的ID为day-08-07-2016
。
因为您的ID已经以#
为前缀,如果您打算以此方式保留,您可能需要这样做:
$('[id="#day-08-07-2016"]').addClass('active');
编辑:正如DaniP在评论中建议的那样,你也可以通过以下方式逃避#
:
$('#\\#day-08-07-2016')
答案 1 :(得分:2)
正如其他答案中已经提到的 - jQuery选择器总是返回一个jQuery对象(你称之为" function")。
如果你想通过id以#
开头的id来选择一些元素 - 你应该转义那个char(使用\\#
)。
以下是一个例子:
$(function() {
console.log($('#\\#abc').text());
});

<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.9.1/jquery.min.js"></script>
<div id="#abc">content</div>
&#13;
答案 2 :(得分:1)
你问题的标题并不真正相关。 jQuery选择器总是返回各种延迟函数。通常称为jQuery set wrapper。在这种情况下,它正在包装一个空集。
我认为你真正的困惑是由你放入id的#
引起的。从ID中获取#
,你会没事的。或者,请参阅有关逃避它的其他答案。
答案 3 :(得分:0)
如果你想知道你的真正错误,请转到任何浏览器的控制台,
添加带有前缀&#39;#&#39;
的任意元素的ID然后使用以下js选择元素,
$("#test")
结果就像对象:
init {context:document,selector:&#34; #test&#34;}
如果您尝试以下内容:
$("##test")
您将面临以下错误:
jquery.min.js:4未捕获错误:语法错误,无法识别的表达式:## test(...)
然后从您的ID中删除#前缀,然后尝试
$("#test")
结果将如下所示,
<强> [A#测试强>
始终避免使用前缀&#39;#&#39;对于元素的id并避免使用前缀&#39;。&#39;对于元素的类......
答案 4 :(得分:0)
在css选择器中,符号#
表示id,而.
表示类。
$('.my-item')
将返回jquery包含的元素,该元素看起来像<a class='myitem' href='#'>
$('#my-item')
将返回jquery包含的元素,该元素看起来像<a id='myitem' href='#'>
在您的情况下,看起来您的id值以#开头。为了使您的选择器工作,您有两个选择:
1)转义css选择器中的#字符。在这种情况下,您的查询将变为$('#\\#day-08-07-2016').addClass('active')
2)更改你的id,使它们不以#字符开头,你的查询可以保持不变。
就个人而言,我会在这里选择2。