我有幾個div的與同一類的div,所以首先我想找到哪一個具有重複類名,然後我想隱藏的所有div的,除了第一個jQuery的發現和隱藏重複的ID或HTML
<div class="jquery"> </div>
<div class="jquery"></div>
需要幫助,請
感謝
我有幾個div的與同一類的div,所以首先我想找到哪一個具有重複類名,然後我想隱藏的所有div的,除了第一個jQuery的發現和隱藏重複的ID或HTML
<div class="jquery"> </div>
<div class="jquery"></div>
需要幫助,請
感謝
jQuery's slice第一個元素:
$('.jquery').slice(1).hide()
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()
}
}
你不應該有多個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
});
非常感謝你,有什麼方法可以找到哪個div有重複的類 – Henry
這不會幫助您識別哪個類名稱重複,但它會隱藏這些蠢事。
$('.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意想不到的後果。也就是說,你幾乎肯定會隱藏你真正想要顯示的內容。
您幾乎可以肯定地想要通過提供預定義的白名單或者至少一些國王的匹配函數(比如正則表達式)來過濾要隱藏哪些類。祝你好運!
爲什麼要額外的jQuery調用?不是'$('。jquery')。slice(1).hide()'夠了嗎? –
可能值得一提的是,新的編碼器'$('。jquery')'不會調用'array.slice()';它是一個jQuery對象,它碰巧擁有自己的'.slice()'方法 - http://api.jquery.com/slice/ – Blazemonger
@Jose,editted。我不知道爲什麼我把它放在那裏! – Joe