12

如果我原来的功能是:

document.getElementsByClassName('blah')[9].innerHTML = 'blah';

...我将如何更改它以便在 jquery 中获得相同的项目?我有这个,但是当我把'[9]'放在最后时它不起作用:

$(data).find('.blah')[9].html();

如果我把 [9] 排除在外,它只会得到第一个类名为“blah”的项目,我希望它得到第 10 个项目。

4

8 回答 8

24

相当于

document.getElementsByClassName('blah')[9].innerHTML = 'blah';

是使用:eq伪选择器

$(".blah:eq(9)").html('blah');

eq功能

$(".blah").eq(9).html('blah');

(...然后是设置内部 HTML的html函数。)

于 2013-03-30T13:48:41.263 回答
2

看看你要找的是:eq()

$('.blah').eq(9).html('blah');

因为:eq()0索引,所以:eq(9)会在第 10 个索引处找到该项目。

.eq() jQuery 文档

还有:nth-child()功能:

$('.blah:nth-child(10)').html('blah');

因为:nth-child()1编入索引,所以您必须在此处排第 10 位。

:nth-child() jQuery 文档

来自文档:

因为 jQuery 对 :nth- 选择器的实现是严格从 CSS 规范派生的,所以 n 的值是“1-indexed”,意味着从 1 开始计数。对于其他选择器表达式,例如 :eq() 或 :even jQuery JavaScript 的“0-indexed”计数。给定一个包含两个

  • s, $('li:nth-child(1)') 选择第一个
  • 而 $('li:eq(1)') 选择第二个。

  • 于 2013-03-30T13:54:18.210 回答
    1

    尝试以下

    $('.blah').eq(9).html('blah');
    
    于 2013-03-30T13:49:09.873 回答
    1

    试试这个

    $('.blah').eq(9).html('blah');
    
    于 2013-03-30T13:54:57.213 回答
    1

    您还应该能够使用 jQuery 的 get() 方法:

    $('.blah').get(9)
    

    jQuery objects also function as indexed arrays as returned elements, so this should also work:

    $('.blah')[9]
    
    于 2013-05-21T18:16:32.923 回答
    0

    另一个答案可能是:

    $($(data).find('.blah')[9]).html();
    

    当您使用 [9] 时,它返回一个不知道 html() 函数是什么的 DOM 对象,但没有 [9] 它返回一个 html() 函数所属的 jQuery 对象。

    于 2013-03-30T13:51:36.717 回答
    0

    试试这个

    $(".blah:eq(9)").html('blah');
    
    于 2013-03-30T13:52:31.227 回答
    0
    $('.blah')[9].innerHTML="BLAH";
    

    这应该可以解决您的问题

    于 2013-03-30T13:53:16.800 回答