3 Stimmen

Jquery finden und ausblenden div mit doppelter id oder html

Ich habe mehrere div's mit der gleichen Klasse, so dass erste ich möchte zu finden, die eine doppelte Klasse Name hat und dann möchte ich alle div's außer dem ersten ausblenden

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

Bitte um Hilfe

Danke

5voto

Joe Punkte 78340

jQuery-Slice das erste Element:

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

Beispiel


EDIT: Duplikate finden

Neues Beispiel

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

2voto

Rafay Punkte 30734

Sollten Sie nicht mehrere id s, für die Klasse können Sie Folgendes tun

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

oder

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

hier ist die Fiedel http://jsfiddle.net/674nF/

Um herauszufinden, ob es mehr als ein div mit demselben Klassennamen gibt, können Sie Folgendes tun

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

um jedes div mit der Klasse zu bearbeiten 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
});

2voto

jimbo Punkte 10756

Damit können Sie zwar nicht feststellen, welche Klassennamen doppelt vorkommen, aber Sie können die doppelten Namen ausblenden.

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

[Bearbeiten] echte Lösung und Kommentar unten hinzugefügt:

(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);

Hinweis: Ich bezweifle ernsthaft, dass Sie dies tatsächlich tun wollen, da es wahrscheinlich unbeabsichtigte Folgen für Ihre Benutzeroberfläche haben wird. Das heißt, Sie werden mit ziemlicher Sicherheit Inhalte ausblenden, die Sie eigentlich weiterhin anzeigen möchten.

Sie wollen mit Sicherheit filtern, welche Klassen ausgeblendet werden sollen, entweder durch eine vordefinierte Whitelist oder zumindest durch eine Abgleichsfunktion (wie einen regulären Ausdruck). Viel Glück!

0voto

Jose Faeti Punkte 11753
$('.class_name')

Sie erhalten ein jQuery-Objekt, das alle DOM-Elemente mit dieser Klasse enthält. Siehe die jQuery in den Dokumenten.

$('.class_name').length

Die Länge gibt Ihnen die Anzahl der Artikel mit dieser Klasse an.

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

Nimmt ein Element auf einmal aus den Elementen mit derselben Klasse, und Sie können an jedem von ihnen gleichzeitig arbeiten. Siehe jede hier. Jedes dieser Elemente hat die gleiche Klasse.

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

Blendet alles bis auf den ersten Eintrag aus, da dieser mit slice .

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X