我在区分为什么一种方法正常工作而另一种方法无效时遇到了一些麻烦。我有一个可行的解决方案,使用.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,就好像它不是一个对象?
感谢任何澄清。
谢谢,
答案 0 :(得分:2)
数组语法返回一个对象但如果要访问它上面的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>
&#13;