我无法区分为什么一种方法有效而另一种方法无效。我通过使用 .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'} );
});
控制台日志告诉我两个选择器都返回一个对象。那么为什么我会在 [] 符号上得到一个类型错误,就像它不是一个对象一样?
感谢任何澄清。
谢谢
最佳答案
数组语法返回一个对象,但如果您想访问其上的 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>
关于javascript - jQuery .eq(index) 与 [index] 如果两者都返回一个对象?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47341385/