附加井号后不选择div

时间:2013-02-22 05:39:42

标签: javascript jquery google-chrome google-chrome-devtools

出于调试目的,这是我尝试在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,但是当我排除它时我可以?

编辑:对不起,我的失败很大。我的意思是相反。请参阅修订后的问题。

enter image description here

我唯一拥有的其他js库是prototype.js,它是在jquery脚本之后加载的。

3 个答案:

答案 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"

我已经检查了一下,看到了结果。 enter image description here

答案 1 :(得分:1)

您应该查看jQuery selector documentation

使用jQuery选择器时的一些基本规则(这些并非详尽无遗,您应该查看文档):

  • 在选择器的开头使用#将搜索id之后#字段$('#loading')的所有DOM节点。因此id="loading"将选择带有id的DOM节点。这应该只返回一个元素,因为页面上的非唯一.是无效的HTML。
  • 在选择器的开头使用#会对class执行类似的搜索,但会查找所有DOM节点的('.loading')属性,并选择具有类匹配的属性你的选择器。因此,loading会在class属性的值中选择$('loading')个DOM节点。
  • 只使用没有前面符号的单词将尝试选择元素标签名称与选择器单词匹配的所有DOM节点。因此<loading>会尝试查找所有jQuery代码,但由于这不是实际的HTML代码,因此不会选择任何内容。

修改 因此,虽然上述情况属实,但似乎你在prototype.js和jQuery之间存在冲突。这些是众所周知的,并且非常感叹。您可以查看jQuery的wiki entry on using jQuery with other librariesjQuery.noConflict()上的文档以获取更多相关信息。实质上,您需要使用$而不是{{1}}来访问jQuery库。

答案 2 :(得分:0)

$("loading")表示您正在选择html元素标记,例如<div>代码($('div'))。

$("#loading")表示您正在选择ID为<div id='loading'>的html元素标记。

查看jquery选择器... http://api.jquery.com/category/selectors/