在使用子元素映射时,如何检查元素是父元素的第一个子元素?

时间:2013-09-05 04:48:27

标签: javascript jquery html

我将所有textarea映射到特定容器中。我需要检查每个textarea是父($('.services'))的第一个元素。如果没有,那就添加一个类。

页面中有几个.services类,并在页面加载后添加。只需为每个.services类显示第一个textarea子项。每个.services类都有很多textarea。

$('textarea').map(function (i) {
      /* if not first textarea of parent element $('.services') */
      $(this).addClass('hide');
});

怎么做?

7 个答案:

答案 0 :(得分:3)

$('.services > textarea').filter(function() {
    return $(this).index() !== 0;
}).addClass('hide');

答案 1 :(得分:2)

尝试.each()喜欢

$('.services textarea').each(function(){
    var indx = $(this).index(); 
    if(indx != 0) {
        $(this).addClass('hide');
    }
}); 

请参阅此FIDDLE

答案 2 :(得分:0)

$(".services").find("textarea:eq(0)");

参考findeq selector

答案 3 :(得分:0)

为什么不隐藏所有.services,然后只显示第一个孩子?

$('.services').hide();
$('.services:first-child').show();

答案 4 :(得分:0)

这应该这样做,

$('.services').each(function(){
   $(this).children('textarea').addClass('hide');
   $(this).children('textarea:first').removeClass('hide').show();
})

答案 5 :(得分:0)

试试这个

$('.services').each(function(){
  if($(this).not(':first-child')){
    $(this).addClass('hide');
  }
}

或:

$('.services textarea:not(:first-child)').addClass('hide');

或:

$('.services').children().not(':first').addClass('hide');

答案 6 :(得分:0)

试试这个:

$('.services textarea').each(function(){
    var textarea = $(this);
    if(!textarea.is(':first')) {
        $(this).addClass('hide');
    }
});