jQuery最后一次返回的结果是什么?

jQuery最后一次返回的结果是什么?,jquery,return,Jquery,Return,我必须把javascript和jQuery混合在一起,直到我能正确重写为止。下面的代码似乎不是等效的: var something = $(".image:last"); // Last element with image class? var element = document.getElementById("slideshow"); // HTML UL with images as children var lastChild = element.lastCh

我必须把javascript和jQuery混合在一起,直到我能正确重写为止。下面的代码似乎不是等效的:

    var something = $(".image:last"); // Last element with image class?

    var element = document.getElementById("slideshow"); // HTML UL with images as children
    var lastChild = element.lastChild;
jQuery究竟返回了什么


注:我可能在实际归属上犯了一个错误。如果是这样的话,我道歉。我对jQuery非常陌生。

我相信所有jQuery选择器都返回jQuery对象,而不是元素

我认为如果您选择jquery对象中的第一项,您将收到实际的元素,因此:

var something = $(".image:last")[0]

将是您要查找的元素。

jQuery将返回一个jQuery对象,这就是它们不相同的原因

因此,两者:

$(".image:last") == $(lastChild)
以及:

当然,假设您在同一个元素上运行这些选择,则会得到相同的结果

一般来说,$.image:last将查找包含一个image类的所有元素,然后返回它找到的最后一个元素,并封装在jQuery对象中

请注意,它们在技术上并不等价:{}=={}在JavaScript中为false。感谢@lonesomeday的评论提醒我


第一个将lastChild封装在jQuery对象中,第二个从jQuery对象中获取实际元素。

jQuery返回一个jQuery对象。在本例中,对象表示页面上的一个元素,但它包含大量额外功能,这些功能记录在jQuery文档页面上:

我喜欢将jQuery$函数看作是一种超级英雄斗篷。将斗篷包裹在页面上的一个元素上,它会获得一系列超能力

尝试使用Firebug之类的工具来检查对象,它将以一种更有意义的方式显示它们

$('.image:last')
这告诉jQuery获取具有类映像的所有元素,然后获取最后一个元素。jQuery选择将返回自定义对象;元素将是选择的唯一成员

请注意,这将返回最后一个.image元素

获取id为slideshow的元素,然后返回最后一个子节点。注意两件事:它返回一个子元素,而jQuery找到了与选择器匹配的最后一个元素,它返回一个节点。元素是节点的一种类型,但文本和注释也是节点。如果元素末尾有空格,则该元素将是最后一个子元素,而不是最后一个子元素


如果您能澄清您试图修改的确切代码,我可以更具体地说明您需要做什么。

这在很大程度上取决于实际的DOM,这两种方法是否选择相同的元素

$.image将选择整个页面中具有class.image的所有DOM元素:last将为您提供集合中的最后一个元素,并将返回包装在jQuery对象中的元素

另一方面:

var element = document.getElementById("slideshow");
var lastChild = element.lastChild;
将仅选择幻灯片放映的最后一个子项,该子项可能与$等价,也可能与$不等价。image:last[0]。这将返回一个DOM节点,不一定是DOM元素

举个例子

<div id="slideshow">
<br />
</div>

如果没有相关的代码,就无法判断它是否等效。实际上,“something”是类为“image”的最后一个元素,而“lastChild”是“slideshow”容器的最后一个子元素。不,它们不会:last不能得到最后一个子对象,甚至{}=={}都是false-对象是不相等的,即使它们具有完全相同的属性。@lonesomeday非常感谢,编辑了我的文章,试图稍微澄清一下。
var element = document.getElementById("slideshow");
var lastChild = element.lastChild;
<div id="slideshow">
<br />
</div>
var lastChild = element.lastChild;
while(lastChild.nodeType !== 1 && (lastChild = lastChild.previousSibling));

if(lastChild) {
    // last element node found
}