javascript - 以不同的方式选择 DOM Element 会带来不同的结果
问题描述
当我使用此代码时$('#pills-testscript-tab')
,我会在 Chrome 开发工具中得到以下结果:
k.fn.init [a#pills-testscript-tab.nav-link]`
这个结果是可扩展的,我可以访问它的所有功能。如果我改为使用$('[data-toggle="pill"]')[1]
完全相同的 DOM 元素,那么我将无法访问它的所有功能,并且开发工具中的结果是:
<a class="nav-link" id="pills-testscript-tab" data-toggle="pill" href="#pills-testscript" role="tab" aria-controls="pills-testscript" aria-selected="false">Test Script</a>
这是不可扩展的。
我还尝试在$('[data-toggle="pill"]')[1]
对象中找到一个函数,它为我提供了与对象中相同的一组函数$('#pills-testscript-tab')
,但找不到任何函数。
我不明白为什么会有差异。可能是儿童动作[1]
改变了结果中的行为。如果有人有任何想法,请告诉我。
非常感谢!
解决方案
如果我改为使用
$('[data-toggle="pill"]')[1]
完全相同的 DOM 元素...
不是这种情况。第一个例子,$('#pills-testscript-tab')
返回一个jQuery 对象。
第二个示例,$('[data-toggle="pill"]')[1]
返回在 jQuery 对象中找到的第二个Element 对象,因为您使用的是索引访问器。这就是您在控制台中看到差异的原因。
要将集合中的第二个元素作为 jQuery 对象返回,请使用eq()
:
var $foo = $('[data-toggle="pill"]').eq(1);
推荐阅读
- ruby - Docker:Ruby 版本从 2.2.0 升级到 2.4.0
- date - 以日期类型为条件的 IFS 公式
- php - 如何在 laravel dom pdf 版本 0.7.0 中添加外部链接
- mysql - 如果同步到 Redshift/BigQuery,来自 MySQL 数据库的 bin 日志复制是否会保持唯一的约束?
- php - 如何自动关闭截断段落中的标签
- search - 禁用谷歌索引网站电话号码
- java - 如何让 Arduino 和 Java 通过单字节进行通信
- hbase - 在 HBase 中,更新记录或删除并插入新记录哪个更快
- android - allDocs之间的区别,在关系袋中找到性能
- ios - 使用蓝牙将数据从 carplay 应用程序传输到 iPhone 应用程序