2

我认为 Google Chrome 控制台日志将最好地解释我的问题:

>> $(".single.portfolio")
[<article id=​"#js-single-item" class=​"post-883 portfolio type-portfolio status-publish hentry single">​…​&lt;/article>​]

>> the_element_id = $(".single.portfolio").attr("id")
"#js-single-item"

>> $(the_element_id)
[]

>> $("#js-single-item");
[]

>> document.getElementById("#js-single-item");
<article id=​"#js-single-item" class=​"post-883 portfolio type-portfolio status-publish hentry single">​…​&lt;/article>​

奇怪的是 getElementById 可以工作,但 jQuery 不行。

我试图通过复制整个 HTML 来重现这个问题,并且代码按预期工作,所以没有麻烦。很可能有些东西正在发生冲突。

我正在寻找调试技巧。谢谢!

编辑:错字。问题解决了。

4

2 回答 2

10
id=​"#js-single-item"

id属性不应包含#符号。当你$('#some-id')在 jQuery 中选择时,它实际上是在调用document.getElementById('some-id').

你可以这样做:

$('#\\#js-single-item')

另外,不要。

于 2013-06-12T05:12:16.597 回答
1

你有#在 id 的开头。因为#是 jQuery 中 'id' 的选择器,它会考虑,它是id = js-single-item 不带的元素#js-single-item

于 2013-06-12T05:18:18.703 回答