我在区分为什么一种方法有效而另一种方法无效时遇到了一些麻烦。我有一个使用 .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>