在元素集合上使用first()方法会显示奇怪的行为.

$("button.overlay").on("click",function(e){
    e.stopPropagation();
    let i = $(e.target).closest('.style-display').children('.modal-info-container');
    let k = i[0];
    let j = i.first();
});

根据我的理解,使用[0]和.first()应该会得到相同的结果.结果是.first()返回未更改的集合. 我做错了什么?

推荐答案

使用[0]和.first()应该会得到相同的结果

不是的.这是不正确的.

$(selector).first()等于$(selector).eq(0)

这两个函数(.first/.eq)都返回一个jQuery集合.

而当

$(selector)[0]$(selector).get(0)相同-参见get()-检索DOM node ,而不是返回jQuery集合.


如果原始集合只有1个元素,则.first()将返回"unchanged collection".

想一想$("div").length$("div").first().length

Jquery相关问答推荐

JQuery AJAX 成功事件未触发

jquery如何判断ajax调用的响应类型

动态加载 css 样式表在 IE 上不起作用

如何在数据表中显示空数据消息

如何使用 jQuery 重置 Select 元素

jQuery: Select 属性大于值的所有元素

使用 JQuery 清除下拉列表

jQuery .get 错误响应函数?

Rails,单击link_to helper后未加载javascript

jquery获取帖子操作网址

即时替换 css 文件(并将新样式应用于页面)

使用 JavaScript 获取用户代理

测试空 jQuery Select 结果

如何从 jQuery UI datepicker 获取日期

检测用户是否创建了滚动事件

更改 div 的内容 - jQuery

jQuery attr 与props ?

$(document).click() 在 iPhone 上无法正常工作. jQuery

jQuery - 不可见时获取元素的宽度(显示:无)

使用 jQuery 检测元素内容的变化