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