0

出于调试目的,这是我尝试在 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 脚本之后加载的。

4

3 回答 3

2

$("#loading")表示使用特定id于该#标志的 dom。

没有#jQuery 将无法识别dom with id

同样,要获得特定DOMclass名称,您必须使用.

一些示例选择器是:

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"

我已经在我身边检查过,看看结果。 在此处输入图像描述

于 2013-02-22T05:43:03.203 回答
1

您应该查看jQuery 选择器文档

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

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

编辑 所以虽然上述情况属实,但您似乎在prototype.js 和jQuery 之间存在冲突。这些是众所周知的,也是令人遗憾的。您可以查看 jQuery 的wiki entry on using jQuery with other libraries和文档以jQuery.noConflict()获取更多信息。本质上,您将需要使用jQuery而不是$访问 jQuery 库。

于 2013-02-22T05:52:41.447 回答
0

$("loading")表示您正在选择一个 html 元素标签,如<div>tag ( $('div'))。

$("#loading")表示您正在选择一个 id 为 like 的 html 元素标签<div id='loading'>

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

于 2013-02-22T05:52:31.890 回答