以不同方式选择DOM元素会带来不同的结果

时间:2019-05-16 07:26:12

标签: javascript jquery html

当我使用此代码$('#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]可能会改变结果中的行为。如果有人有任何想法请告诉我。

非常感谢!

1 个答案:

答案 0 :(得分: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);