• Jetzt anmelden. Es dauert nur 2 Minuten und ist kostenlos!

jQuery: alle Bilder selektieren, außer die in bestimmten Klassen

147852369

Mitglied
Hallo Forum,

ich selektiere alle Bilder der Website und lasse um diese herum ein a:href bauen, damit diese Bilder in einer Lightbox geöffnet werden können.
Nun gibt es Bilder, die nicht in einer Lightbox geöffnet werden dürfen bzw. um diese herum bereits ein a:href existiert.

Das ist der Code bisher:
HTML:
  <script type="text/javascript">
  if ( $(".item-page")[0] || $(".blog")[0]  ){
    $(function ()
    {
      $("#main").ready(function ()
      {
        $('img').each(function ()
        {
          var currImg = $(this);  // cache the selector
              
          var cyImgTitle   = (typeof currImg.attr("title") == 'undefined') ? "" : currImg.attr("title");
          var cyImgAlt  = (typeof currImg.attr("alt") == 'undefined') ? "" : currImg.attr("alt");
      
          currImg.wrap("<a class='jcepopup' rel='title[" +  cyImgTitle + "];caption[" +  cyImgTitle + "::" + cyImgAlt + "] type='image' href='" + currImg.attr("src") + "' target='_blank' />");
            
          });
      });
    });
  }
  </script>

Dieser Code ist nicht sehr effektiv, da wirklich alle Bilder selektiert werden.
Wie kann ich eine Blacklist mit Klassen einbauen? Mit .not() komme ich nicht weiter, da die Bilder für gewöhnlich keine Klassen oder IDs haben. Ich möchte aber schauen lassen, dass Bilder, die um bestimmte Tags wie span, div oder ähnliches mit in einer vorgegebenen Blacklist mit Klassennamen übersprungen werden.

Beispiel:
HTML:
<div id="main">
<img src="xxx"> <!-- wird selektiert und bearbeitet

<span class="hasTip">
<img src="xxx"> <!-- wird momentan auch selektiert, soll aber nicht, da die Klasse hasTip in einer Blacklist ist
</span>

<span class="KlasseNichtInBlacklist">
<img src="xxx"> <!-- wird selektiert, da span class "KlasseNichtInBlacklist" nicht in Blacklist ist.
</span>

</div>

Wie wird das umgesetzt?
 
Werbung:
Durch Traversieren. Liegt das Bild innerhalb eines Blockelements ist es ein child. In dem Fall wäre so etwas wie:
#
Code:
if ($('img').closest('div')) {}

denkbar. Der Span sollte auch einen Node bilden und damit ein Sibling sein. Ich würde mal:

Code:
if ($('img').prev().hasClass('hasTip')) {}

versuchen.
 
Das kann so nicht funktionieren, da geschaut wird, ob das vorherige Bild die Klasse "hasTip" besitzt. Die Bilder haben bei mir keine Klassen. Aber manche Bilder in andere Tags wie span geschachtelt, die Klasennamen besitzen.

Aber so geht's:
Code:
if ($(currImg).closest('span').hasClass('hasTip')) { } else { // mach was }
 
Zuletzt bearbeitet:
Werbung:
Zurück
Oben