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

jQuery: Funktion gibt true statt false zurück

147852369

Mitglied
Hallo Forum,

es sieht banal aus, aber warum gibt folgende Funktion true zurück, obwohl ich ein false erwarte?

HTML:
function check() {
                if ($(currentImg).closest('span').hasClass('hasTip')) return false;
                if ($(currentImg).height() > 150) return false;
                if ($(currentImg).width() > 150) return false;
                return true;
            }

Ich will, dass false zurückgegeben wird, wenn eines der Bedingungen erfüllt wird. Wenn nicht, dann true.
Ein Bild mit den Maßen 50 x 200 sollte also nicht durchgehen, weil eins der Maße über 150px ist.

Hier ein größerer Auszug:
HTML:
        $('article img').each(function () // selektiere alle Bilder
        {
            var currentImg = $(this);  // cache the selector
          
            function check() {
                if ($(currentImg).closest('span').hasClass('hasTip')) return false;
                if ($(currentImg).height() > 150) return false;
                if ($(currentImg).width() > 150) return false;
                return true;
            }
          
          
            if (!check()) {
                // wenn das Bild groß genug ist, mache etwas damit, ansonsten lasse kleine Bilder in Ruhe
               // currentImg.wrap(cyWrap);
            }
        });
 
Werbung:
Moin

es sieht banal aus, aber warum gibt folgende Funktion true zurück, obwohl ich ein false erwarte?
HTML:
 .....
            var currentImg = $(this);  // cache the selector
         
            function check() {
                if ($(currentImg).closest('span').hasClass('hasTip')) return false;
Weil es dann
if (currentImg.closest('span').hasClass('hasTip')) return false;
heißen muss.

Deswegen schreibt man jQuery Objekte, damit man das erkennt mit einem $, nämlich so:
Code:
var $currentImg = $(this);  // cache the selector
         
            function check() {
                if ($currentImg.closest('span').hasClass('hasTip')) return false;
MfG
 
Das ist der Grund, warum die if-Bedingungen nicht das machen, was ich gerne hätte?
Habe das halt so aus der Dokumentation übernommen.
 
Werbung:
Da war ein logischer Fehler drin.
So scheint es zu funktionieren:
Code:
        $("article img").each(function ()
        {
            var currentImg = $(this);  // cache the selector
           
            function check() {
                if ($(currentImg).closest('span').hasClass('hasTip')) return false;
                if ($(currentImg).height() < 150) return false;
                if ($(currentImg).width() < 150) return false;
                return true;
            }
           
           
            if ( check() ) {
                var cyImgTitle   = currentImg.attr("title") === undefined ? "" : currentImg.attr("title");
                var cyImgAlt  = currentImg.attr("alt") === undefined ? "" : currentImg.attr("alt");
                var cyWrap = "<a class='jcepopup' " +
                            "rel='title[" + cyImgTitle + "]; caption[" + cyImgAlt + "]' " +
                            "type='image' " +
                            "href='" + currentImg.attr("src") + "' " +
                            "title='" + cyImgTitle +  "::" + cyImgAlt + "'" +
                            "target='_blank' /> </a>";
               
                currentImg.wrap(cyWrap);
            }
        });

Kann man hier noch etwas verbessern? Der Funktion check() übergebe ich ja nichts. Ist auch nicht notwendig oder?
 
Zurück
Oben