Это не поможет вам определить, какие имена классов дублируются, но это скроет дубликаты.
$('.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);
Примечание: я искренне сомневаюсь, что вы действительно хотите это сделать, поскольку это, вероятно, будет иметь непредвиденные последствия для вашего пользовательского интерфейса.То есть вы почти наверняка будете скрывать контент, который действительно хотите продолжать показывать.
Вы почти наверняка захотите отфильтровать, какие классы должны быть скрыты, либо предоставив предварительно определенный белый список, либо, по крайней мере, соответствующую функциюкакой-то король (как регулярное выражение).Удачи!