jQuery .eq(index) vs [index] 如果两者都返回一个对象



我在区分为什么一种方法有效而另一种方法无效时遇到了一些麻烦。我有一个使用 .eq(( 的可行解决方案,但想正确理解为什么如果它仍然返回一个对象,我不能使用 [] 表示法调用 .css 方法?

这是我的测试代码,试图自己弄清楚:

$('.slider').each(function() {
  var $slides = $('.slide');
  console.log(jQuery.type($slides.eq(1)));
  console.log(jQuery.type($slides[2]));
  $slides.eq(1).css( {color: 'red'} );
  $slides[2].css( {color: 'red'} );
});

控制台日志告诉我两个选择器都返回一个对象。那么为什么我在 [] 表示法上得到一个 typeError 就像它不是一个对象一样呢?

感谢任何澄清。

谢谢

数组

语法返回一个对象,但如果你想访问它的JQuery函数,你需要调用$(object),其中.eq()返回一个JQuery对象。 例如:

console.log('By eq:', $('button').eq(0).text())
console.log('By Array as a JQuery Object', $( $('button')[0]).text())
try {
  console.log('By Array:', $('button')[0].text())
} catch(e) {
  console.log('You get an exception because the element doens't have a  property named text');
  console.log(e);
}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<button>A button</button>

相关内容

最新更新