getElementsByClassName与jquery
如果我原来的function是:
document.getElementsByClassName('blah')[9].innerHTML = 'blah';
…我将如何更改,以便在jquery中获得相同的项目? 我有这个,但当我把'[9]’放在最后它不起作用:
$(data).find('.blah')[9].html();
它离开了[9],它只获得了第一个类名为’blah’的项目,我希望它能得到第10个项目。
相当于
document.getElementsByClassName('blah')[9].innerHTML = 'blah';
是使用:eq
伪选择器 :
$(".blah:eq(9)").html('blah');
或者eq
函数 :
$(".blah").eq(9).html('blah');
(…然后使用html
函数设置内部HTML。)
看看你在找什么:eq()
:
$('.blah').eq(9).html('blah');
因为:eq()
是0
索引,所以:eq(9)
将在第10个索引处找到该项。
.eq()jQuery doc
还有:nth-child()
函数:
$('.blah:nth-child(10)').html('blah');
因为:nth-child()
是1
索引的,所以你必须在那里放置第10个位置。
:nth-child()jQuery doc
来自文档:
因为jQuery的实现:nth-选择器严格来自CSS规范,n的值是“1-indexed”,这意味着计数从1开始。对于其他选择器表达式,例如:eq()或:甚至jQuery如下JavaScript的“0索引”计数。 鉴于一个包含两个
s,$(’li:nth-child(1)’)选择第一个 而$(’li:eq(1)’)选择第二个。
尝试以下方法
$('.blah').eq(9).html('blah');
另一个答案可能是:
$($(data).find('.blah')[9]).html();
当你使用[9]时,它返回一个DOM对象,它不知道html()是什么函数但是没有[9]它返回一个jQuery对象,html()函数是它的一部分。
试试这个
$(".blah:eq(9)").html('blah');
试试这个
$('.blah').eq(9).html('blah');
$('.blah')[9].innerHTML="BLAH";
这应该可以解决您的问题
您还应该只能使用jQuery的get()方法:
$('.blah').get(9)
jQuery对象也作为返回元素作为索引数组,所以这也应该工作:
$('.blah')[9]