2011-09-16 22 views
3

我有幾個div的與同一類的div,所以首先我想找到哪一個具有重複類名,然後我想隱藏的所有div的,除了第一個jQuery的發現和隱藏重複的ID或HTML

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

需要幫助,請

感謝

回答

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() 
    } 
} 
+2

爲什麼要額外的jQuery調用?不是'$('。jquery')。slice(1).hide()'夠了嗎? –

+1

可能值得一提的是,新的編碼器'$('。jquery')'不會調用'array.slice()';它是一個jQuery對象,它碰巧擁有自己的'.slice()'方法 - http://api.jquery.com/slice/ – Blazemonger

+0

@Jose,editted。我不知道爲什麼我把它放在那裏! – Joe

2

你不應該有多個id S,爲類,你可以做

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

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

這裏是小提琴http://jsfiddle.net/674nF/

,以找出是否有一個以上的分度,相同的類名,你可以做

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

操縱每個div都具有jquery

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

非常感謝你,有什麼方法可以找到哪個div有重複的類 – Henry

2

這不會幫助您識別哪個類名稱重複,但它會隱藏這些蠢事。

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

[編輯]下面添加真正的解決方案和評論:

(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意想不到的後果。也就是說,你幾乎肯定會隱藏你真正想要顯示的內容。

您幾乎可以肯定地想要通過提供預定義的白名單或者至少一些國王的匹配函數(比如正則表達式)來過濾要隱藏哪些類。祝你好運!

0
$('.class_name') 

會給你一個jQuery對象,它包含所有具有該類的DOM元素。請參閱文檔中的jQuery

$('.class_name').length 

length屬性會給你與該類的項目數。

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

將從同一類的元素中一次取出一個元素,並且您可以一次處理它們中的每個元素。請參閱each。這些項目中的每一個都具有相同的類別。

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

將會隱藏除第一項以外的所有項目,因爲它已被slice刪除。