请保持友好。我的第一个问题在这里。我正在学习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>
标签?这叫什么?
答案 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编写的“神奇”之处在于语法几乎总是一样(并给人以直观的感觉)。
获取jQuery对象。这通常是变量$
,但是jQuery
也可以使用。
调用函数($()
)。在某些情况下,您不需要,例如ajax请求,但这是一个单独的主题和用例。
为其提供任何类型的selector($('#myDiv')
),这是一种根据特定HTML元素的属性和在HTML中的位置来引用它们的方法文档(此处我们基于id
查找特定元素)。
处理结果($('#myDiv').html(...etc)
)
在这一点上,我将指出jQuery documentation应该很方便,因此您知道任何特定函数调用的结果,但是在几乎所有情况下,该函数都会返回另一个jQuery对象,其中包含对您在该函数调用期间选择或操作的任何元素的引用。
在后一个示例中,我们将收到对#myDiv元素的引用,然后在其上调用另一个函数(.html()
),该函数将读取或更新该html元素的内容。
对于您特别询问的那一行,jQuery将解释用于“选择” p标记的语法,而不是查找文档中的所有“ p”元素(该语法为{{ 1}}),而是创建一个新的'p'元素并将其作为指向此新创建元素的jQuery对象存储在内存中。详细了解该语法及其可能性here。
好吧,我希望这会有所帮助。我当然喜欢写它,甚至在自己的过程中也学到了一些东西。