jQuery prüft, ob das Element eine bestimmte Stileigenschaft hat, die inline definiert ist

Lesezeit: 3 Minuten

jQuery pruft ob das Element eine bestimmte Stileigenschaft hat die
Matthäus Grima

Ich muss überprüfen, ob einem Element eine definierte CSS-Eigenschaft zugewiesen wurde, aber ich habe einige Probleme mit der Funktion jQuery.css().

Die Eigenschaft, die ich suche, ist Breite.

Wenn das Element keine definierte Breite hat und ich das versuche:

if(base.$element.css('width') !== 'undefined')

Ich erhalte die berechnete Breite des Browsers.

jQuery pruft ob das Element eine bestimmte Stileigenschaft hat die
James Allardice

Hier ist ein sehr einfaches (wahrscheinlich stark verbesserungsbedürftiges) Plugin, das ich zusammengestellt habe und das Ihnen den Wert einer Inline-Stileigenschaft (und zurückgeben) liefert undefined wenn diese Eigenschaft nicht gefunden wird):

​(function ($) {
    $.fn.inlineStyle = function (prop) {
         var styles = this.attr("style"),
             value;
         styles && styles.split(";").forEach(function (e) {
             var style = e.split(":");
             if ($.trim(style[0]) === prop) {
                 value = style[1];           
             }                    
         });   
         return value;
    };
}(jQuery));

Du kannst es so nennen:

//Returns value of "width" property or `undefined`
var width = $("#someElem").inlineStyle("width");

Hier ist ein Arbeitsbeispiel.

Beachten Sie, dass nur der Wert für zurückgegeben wird erstes Element im abgestimmten Satz.

Da es zurückkehrt undefined Wenn diese Stileigenschaft nicht gefunden wird, können Sie sie in Ihrer Situation wie folgt verwenden:

if (base.$element.inlineStyle("width")) {
    // It has a `width` property!
}

Aktualisieren

Hier ist eine viel, viel kürzere Version. Ich erkannte, dass prop("style") gibt ein Objekt zurück, keine Zeichenfolge, und die Eigenschaften dieses Objekts entsprechen den verfügbaren Stileigenschaften. Sie können also einfach Folgendes tun:

(function ($) {
    $.fn.inlineStyle = function (prop) {
        return this.prop("style")[$.camelCase(prop)];
    };
}(jQuery));

Möglicherweise möchten Sie die Verwendung von ersetzen $.camelCase mit einer benutzerdefinierten Camelcase-Funktion, da die jQuery-Funktion undokumentiert zu sein scheint und wahrscheinlich nicht gut ist, um sich darauf zu verlassen. Ich habe es hier nur verwendet, weil es kürzer ist.

Hier ist ein Arbeitsbeispiel von diesem. Beachten Sie, dass in diesem Fall der Rückgabewert der leere String ist, wenn der Stil nicht auf dem Element gefunden wurde. Das wird sich noch auswerten lassen false, also oben if Aussage sollte noch funktionieren.

  • Großartig … zuerst denke ich an einige Reg-Ex-basierte Lösungen … wenn das funktioniert, dann ist es großartig !!

    – cooler Typ

    3. Juli 12 um 8:11 Uhr

  • @MatthewGrima – Ich habe meine Antwort mit einer viel kürzeren Version dieses Plugin-Codes aktualisiert. Es könnte sich jedoch lohnen, das in ein paar verschiedenen Browsern zu testen – ich habe es nur in Chrome ausprobiert.

    – James Allardice

    3. Juli 12 um 8:36 Uhr


1643142665 113 jQuery pruft ob das Element eine bestimmte Stileigenschaft hat die
Alain Jacomet Forte

Warum nicht einfach:

var $el = $('element[style*="width"]');

Und dann kannst du es testen mit:

if ( $el.length ) {
    //...
}

  • das ist mit abstand die beste lösung! Danke schön !

    – pmrotule

    11. Mai 14 um 16:34 Uhr

  • Ich mag es, aber diese Lösung passt auch zu „Min-Breite“ und „Max-Breite“, was problematisch sein kann, wenn speziell nach „Breite“ ohne Bindestrich gesucht wird.

    – Drey

    20. September 16 um 18:00 Uhr

1643142665 851 jQuery pruft ob das Element eine bestimmte Stileigenschaft hat die
Engel

Zum Beispiel nach “Breite” suchen:

if ($(element).prop("style")["width"] !== '')
{...}

Benutzen .attr um die zu überprüfen style Attribut.

if(base.$element.attr('style').length > 0) {
   //...
}

Wenn dir die Breite wichtig ist, dann

if(base.$element.attr('style').indexOf('width') !== -1) {
   //...
}

Matthew können Sie überprüfen, ob das Stilattribut undefiniert ist oder nicht

    var attr = $(this).attr('style');
    if (typeof attr !== 'undefined' ) {
   }

  • Dies ist nicht das, was die Frage stellt. Es wird gefragt, ob a width wurde in der definiert style Attribut.

    – James Allardice

    3. Juli 12 um 8:16 Uhr

  • Dies ist nicht das, was die Frage stellt. Es wird gefragt, ob a width wurde in der definiert style Attribut.

    – James Allardice

    3. Juli 12 um 8:16 Uhr

.

636840cookie-checkjQuery prüft, ob das Element eine bestimmte Stileigenschaft hat, die inline definiert ist

This website is using cookies to improve the user-friendliness. You agree by using the website further.

Privacy policy