2009-09-24 4 views

Antwort

20

Kopieren der Quelle von SO1004475 - jQuery CSS plugin that returns computed style of element to pseudo clone that element? - Bitte folgen Sie Link und Upvote dort, wenn Sie es nützlich finden.

Es scheint lächerlich, aber das ist wahrscheinlich die beste Option - macht .css() ohne Argumente ein Objekt mit all diesem Zeug zu bekommen.

jQuery.fn.css = (function(css2) { 
    return function() { 
     if (arguments.length) { return css2.apply(this, arguments); } 
     var attr = ['font-family','font-size','font-weight','font-style','color', 
      'text-transform','text-decoration','letter-spacing','word-spacing', 
      'line-height','text-align','vertical-align','direction','background-color', 
      'background-image','background-repeat','background-position', 
      'background-attachment','opacity','width','height','top','right','bottom', 
      'left','margin-top','margin-right','margin-bottom','margin-left', 
      'padding-top','padding-right','padding-bottom','padding-left', 
      'border-top-width','border-right-width','border-bottom-width', 
      'border-left-width','border-top-color','border-right-color', 
      'border-bottom-color','border-left-color','border-top-style', 
      'border-right-style','border-bottom-style','border-left-style','position', 
      'display','visibility','z-index','overflow-x','overflow-y','white-space', 
      'clip','float','clear','cursor','list-style-image','list-style-position', 
      'list-style-type','marker-offset']; 
     var len = attr.length, obj = {}; 
     for (var i = 0; i < len; i++) { 
      obj[attr[i]] = css2.call(this, attr[i]); 
     } 
     return obj; 
    }; 
})(jQuery.fn.css); 

Beachten Sie, dass dies nicht alle möglichen CSS-Eigenschaften erfasst, insbesondere neue CSS3-Eigenschaften. Hier ist ein list of all standard CSS and stable CSS3 properties, und hier ist einer von hyphen-prefixed vendor-specific properties (wie -moz-border-start). Wenn Sie wirklich alle wollen, können Sie sie von dort abholen.

+4

Das ist riesig .................... – rahul

+0

Einverstanden - aber ich denke, es ist das, was das OP gefragt hat. – gnarf

+2

Bearbeitet, um zu vermeiden, den Namensraum 'jQuery.fn' mit einer' css2'-Funktion zu verschmutzen. Ansonsten ist das ein großartiges Zeug. –

3

Für Inline-Styles:

var styles = $("#someelement").attr("style"); 

Von dort aus sollten Sie in der Lage sein, diese Zeichenfolge zu teilen, wenn Sie die Stile Schleife benötigen.

individuelle Stile zu überprüfen, überprüfen Sie die Dokumentation:

http://docs.jquery.com/CSS

+0

Ich brauche auch Attribute, die in css – newbie

+0

gesetzt werden, wenn das möglich ist – newbie

+0

Vielleicht erklären, was Sie versuche in deiner Frage zu erreichen. Sie sollten besser nach einzelnen Stilen suchen oder Klassen verwenden und .hasClass() verwenden - gnarf hat einen Link unten sonst – ScottE

-4
$("#div1).css("background-color"); 

wird die Hintergrundfarbe Eigenschaft eines Elements mit id div1 zurückzukehren.

css(name)

Sorry, ich weiß nicht, einen Weg, um alle CSS zu bekommen jQuery-Attribute verwenden.

15

Ab jQuery 1.8, können Sie tun:

$("#yourElement").css("cssText"); 

, die die zugrunde liegenden window.getComputedStyle(element).cssText nutzt. Das ist der einfachste Weg.

+1

Diese Antwort ist wahrscheinlich die beste in der Reihe ... – EJTH

+2

@EJTH Ich bin der Autor dieses Codes in jQuery ;-) –

+0

Vielen Dank!Du hast mir geholfen, das Problem zu lösen, Dinge in einen bestimmten Container in der Dom zu bewegen, ohne dass das Styling verloren geht! :-) Ich benutze es für ein Pet-Projekt, lassen Sie eine HTML-Seite mit box2d auseinander fallen ... – EJTH

Verwandte Themen