JavaScript变量等于jQuery选择器创建打开和关闭标签。为什么?

时间:2018-11-14 02:14:41

标签: javascript jquery html html5

请保持友好。我的第一个问题在这里。我正在学习JavaScript和jQuery。 Google帮不上什么忙,因为我不知道如何提出正确的问题。请需要人工干预。我试图找出这段简单的代码是怎么回事:

var myVar = $("<p>");

这会创建一个开始和结束<p>标签,但我不明白为什么。

接下来,我将本段添加到现有元素#myDiv中。例如:

$("myDiv").html(myVar);得到以下结果:

<div id="myDiv"><p></p></div>

继续...

$("myDiv").html(myVar.text("A string for the paragraph"));

结果:

<div id="myDiv"><p>A string for the paragraph</p></div>

第一个代码段为何创建一个开始和结束<p>标签?这叫什么?

2 个答案:

答案 0 :(得分:4)

在纯JavaScript中,这只是一种更简洁的方法:

var myVar = document.createElement("p");

然后像这样去jQuery:

var myVar = $("<p></p>");

由于它是jQuery,并且变得越来越简洁,因此最终变为:

var myVar = $("<p>");

答案 1 :(得分:2)

这是在学习过程中要问的正确问题,对您有好处!话虽这么说,至少一个SO帖子将无法完全回答它,至少以我认为你问的方式,但是我(我们)会给你我所能提供的。

首先,JavaScript与HTML交互的方式是通过文档对象模型(DOM)。这就像获取整个HTML文档并将其切成各个元素,标签,属性等,然后在“普通” JavaScript中以(很大)Object构造该文档的表示形式一样。分配给该对象的变量名称为document。这个特殊的Object具有各种神奇的属性和方法(函数),可用于读取和更新DOM的任何部分(最终将其转换为您在浏览器中看到的HTML)。

到目前为止,我所描述的内容与jQuery无关,并且所有这些操作都可以使用普通的JavaScript来完成(例如,杰克·巴什福德的回答)。但是,由于浏览器和其他Web技术多年来的发展方式,在“普通” JavaScript中执行任何此类操作时,存在许多“陷阱”(或曾经存在)。从历史上讲,jQuery是一个极其重要的工具,因为它提供了一种“标准”的方式来编写非常直接的代码来完成所有此类DOM读取或操作,并且jQuery库将确保避免所有“陷阱”。

那么,jQuery是什么(在代码中)?嗯,可能有很多技术答案,其中一个重要的技术答案是它是一个对象,因为在JavaScript中,(almost) EVERYTHING is an Object。但是,让我们集中讨论手头的问题以及您提供的代码:

$("<p>");

在这里,美元符号是jQuery(或指向jQuery对象的变量)。后面的括号表明jQuery对象正在作为函数被调用。就像在代码中说的那样,“使用以下字符串执行jQuery:'<p>'”。向后退一步,完整的声明

var myVar = $("<p>");

表示“此变量'myVar'现在指向结果,无论用'<p>'做jQuery事情都会给我们带来的结果。”

用jQuery编写的“神奇”之处在于语法几乎总是一样(并给人以直观的感觉)。

  1. 获取jQuery对象。这通常是变量$,但是jQuery也可以使用。

  2. 调用函数($())。在某些情况下,您不需要,例如ajax请求,但这是一个单独的主题和用例。

  3. 为其提供任何类型的selector$('#myDiv'),这是一种根据特定HTML元素的属性和在HTML中的位置来引用它们的方法文档(此处我们基于id查找特定元素)。

  4. 处理结果($('#myDiv').html(...etc)

在这一点上,我将指出jQuery documentation应该很方便,因此您知道任何特定函数调用的结果,但是在几乎所有情况下,该函数都会返回另一个jQuery对象,其中包含对您在该函数调用期间选择或操作的任何元素的引用。

在后一个示例中,我们将收到对#myDiv元素的引用,然后在其上调用另一个函数(.html()),该函数将读取或更新该html元素的内容。

对于您特别询问的那一行,jQuery将解释用于“选择” p标记的语法,而不是查找文档中的所有“ p”元素(该语法为{{ 1}}),而是创建一个新的'p'元素并将其作为指向此新创建元素的jQuery对象存储在内存中。详细了解该语法及其可能性here

好吧,我希望这会有所帮助。我当然喜欢写它,甚至在自己的过程中也学到了一些东西。