Jquery使用重复的id或html查找并隐藏div

时间:2011-09-16 14:31:05

标签: jquery find hide

我有几个具有相同类的div,所以首先我想找到哪个具有重复的类名,然后我想要隐藏除第一个之外的所有div

<div class="jquery"> </div> 
 <div class="jquery"></div>

需要帮助

由于

4 个答案:

答案 0 :(得分:5)

jQuery's slice第一个元素:

$('.jquery').slice(1).hide()

example

<小时/> 编辑:查找重复项

New Example

var duplicated = {},
    class;
$('div').each(function() {
    class = $(this).attr('class');
    duplicated[class] = (duplicated[class] | 0) + 1
})

for (var key in duplicated) {
    if (duplicated.hasOwnProperty(key) && duplicated[key] > 1) {
        $('div.' + key).slice(1).hide()
    }
}

答案 1 :(得分:2)

你不应该有多个id,你可以做的课

$("div.jquery:not(:first)").hide();

$("div.jquery:gt(0)").hide();

这里是小提琴http://jsfiddle.net/674nF/

找出是否有多个具有相同类名的div可以做

if($(".jquery").length>1){
// more than one divs have class jquery
}

操纵具有类jquery

的每个div
$(".jquery").each(function(index,j){
$(this).attr("rel","div number"+index);  //this will refer to each respective div having class jquery, for each iteration
});

答案 2 :(得分:2)

这不会帮助您确定哪些类名重复,但它会隐藏欺骗。

$('.duplicated_class_name').slice(1).hide()

[edit]在下面添加了真实的解决方案和评论:

(function($){

var
  classes = {},
  dupes = {};

$('div')
  .each(function(index, elem){
    $.each(
      elem.className.split(/\s+/),
      function(index, name) {
        if (name) {
          classes[name] = (classes[name] || 0) + 1;
          if (classes[name] > 1) {
            dupes[name] = classes[name];
          }
        }
      }
    );
  });

$.each(
  dupes,
  function(name) {
    $('.' + name)
      .slice(1)
        .hide();
  }
);

})(jQuery);

注意:我真诚地怀疑您确实想要这样做,因为它可能会对您的UI产生意想不到的后果。也就是说,您几乎肯定会隐藏您真正希望继续展示的内容。

您几乎肯定希望通过提供预定义的白名单来过滤要隐藏的类,或者至少是某个国王的匹配函数(如正则表达式)。祝你好运!

答案 3 :(得分:0)

$('.class_name')

将为您提供一个包含该类的所有DOM元素的jQuery对象。请参阅文档中的jQuery

$('.class_name').length

length属性将为您提供该类的项目数。

$('.class_name').each( function () {
    // do something here...
});

将从具有相同类的元素中一次获取一个元素,并且您可以一次处理每个元素。请在此处查看each。每个项目都有相同的类别。

$('.class_name').slice(1).hide()

将隐藏除第一项之外的所有项目,因为它已被slice删除。