出于调试目的,这是我尝试在Chrome控制台中输入的内容:
$("#loading")
> null
但如果我这样做,它会正确检索div:
$("loading")
> <div id="loading" align="center" style="display: none;">
我正在使用jquery-1.4.1.min.js。
<script type="text/javascript" src="../../js/jquery-1.4.1.min.js"></script>
这对我来说没有意义,为什么我不能用#符号选择div,但是当我排除它时我可以?
编辑:对不起,我的失败很大。我的意思是相反。请参阅修订后的问题。
我唯一拥有的其他js库是prototype.js,它是在jquery脚本之后加载的。
答案 0 :(得分:2)
$("#loading")
表示使用特定id
来获取#
符号。
没有#
jQuery将无法识别dom with id
。
与获取具有DOM
名称的特定class
类似,您必须使用.
一些示例选择器是:
Selector Example Selects
* $("*") All elements
#id $("#lastname") The element with id="lastname"
.class $(".intro") All elements with class="intro"
.class,.class $(".intro,.demo") All elements with the class "intro" or "demo"
我已经检查了一下,看到了结果。
答案 1 :(得分:1)
您应该查看jQuery selector documentation。
使用jQuery选择器时的一些基本规则(这些并非详尽无遗,您应该查看文档):
#
将搜索id
之后#
字段$('#loading')
的所有DOM节点。因此id="loading"
将选择带有id
的DOM节点。这应该只返回一个元素,因为页面上的非唯一.
是无效的HTML。#
会对class
执行类似的搜索,但会查找所有DOM节点的('.loading')
属性,并选择具有类匹配的属性你的选择器。因此,loading
会在class
属性的值中选择$('loading')
个DOM节点。<loading>
会尝试查找所有jQuery
代码,但由于这不是实际的HTML代码,因此不会选择任何内容。 修改强>
因此,虽然上述情况属实,但似乎你在prototype.js和jQuery之间存在冲突。这些是众所周知的,并且非常感叹。您可以查看jQuery的wiki entry on using jQuery with other libraries和jQuery.noConflict()
上的文档以获取更多相关信息。实质上,您需要使用$
而不是{{1}}来访问jQuery库。
答案 2 :(得分:0)
$("loading")
表示您正在选择html元素标记,例如<div>
代码($('div')
)。
$("#loading")
表示您正在选择ID为<div id='loading'>
的html元素标记。
查看jquery选择器... http://api.jquery.com/category/selectors/