2 Stimmen

CSS kann nicht über Variable gesetzt werden - jquery

Ich versuche, dynamisch css mit Variablen, die ich abrufen, was ein Benutzer in ein Textfeld eingeben.

Dies ist die Zeile des Codes:

$(get_elem_hierarchy()).css($(this).data('theCss').theProp, $(this).data('theCss').theVal);

Alles funktioniert einwandfrei. Sowohl die css-Eigenschaft und der css-Wert Trace auf die Konsole richtig, aber aus irgendeinem Grund wird es nicht festgelegt. Wenn ich hardcode es funktioniert gut.

Ich habe auch versucht, diese in Anführungszeichen zu setzen, aber auch das funktioniert nicht, also ist das nicht das Problem.

Übersehe ich etwas? Ich habe überall nachgeschaut und kann nichts finden, was dieses Thema auch nur annähernd behandelt, also vielleicht gehe ich die Sache falsch an.

Für jede Hilfe wären wir Ihnen sehr dankbar.

0 Stimmen

Können Sie uns zeigen, wie die Funktion get_elem_hierarchy() ausgeführt wird?

0 Stimmen

Wie setzen Sie $(this).data('theCss')?

6voto

Russ Cam Punkte 120837

Gibt es einen bestimmten Grund dafür, dass Sie .data() verwenden? Laut jQuery Standort -

jQuery.data(elem)

Gibt eine eindeutige ID für das Element zurück.

Normalerweise wird diese Funktion nur intern verwendet. Sie werden wahrscheinlich nicht die Methode data() nicht auf diese Weise verwenden. Sie wird automatisch aufgerufen, wenn nötig wenn Sie die andere data() Funktionalität.

Ich habe eine ein Beispiel wie Sie einen CSS-Namen und einen Wert in 2 Eingabefelder eingeben und dann auf ein div anwenden können, um zu überprüfen, dass Sie CSS mit Variablen festlegen können.

Sie können das Beispiel hier bearbeiten und mit ihm spielen .

Wie Sie sehen können, wird der Befehl jQuery.val() verwendet, um den Text aus jedem Textfeld abzurufen und ihn einer Variablen zuzuweisen. Ist es das, was Sie vorhatten zu tun?

EDITAR:

Geändertes Beispiel hier

das eine Textarea für die Eingabe verwendet und die Angabe mehrerer CSS-Attribute ermöglicht. Das funktioniert, weil jQuery.css() ein Objekt als Parameter akzeptieren kann. Wir erstellen also ein Objekt mit Eigenschaften und ihren jeweiligen Werten auf der Grundlage des Textarea-Wertes und übergeben dieses Objekt dann an den jQuery.css()-Befehl. Geben Sie die Attribute in der Textarea einfach so an, wie Sie es in CSS-Style-Tags tun würden, z. B.

background-color: red; height: 500px; width: 300px; 
font-size: 20px; color: white; 

und alle werden auf die <div> con id="mydiv"

jQuery Code hier -

$(function() {

    $('#mybutton').click(function(e) {

    var cssObject = {},
        cssName = null,
        cssValue = null;

    var cssAttributeString = $('#value').val();
    var cssAttributeArray = cssAttributeString.split(";");

    for (var i = 0 ; i < cssAttributeArray.length ; i++){
        cssName = $.trim(cssAttributeArray[i].substring(0,cssAttributeArray[i].indexOf(":")));
        cssValue = $.trim(cssAttributeArray[i].substring(cssAttributeArray[i].indexOf(":") + 1, cssAttributeArray[i].length)); 
        cssObject[cssName] = cssValue;    
    }

    $('#mydiv').css(cssObject);

    });

});

0 Stimmen

Get_elem_hierarchy() gibt das Element zurück. Ich weiß, dass dieser Teil funktioniert, weil, wenn ich hardcode die css wie folgt: $(get_elem_hierarchy()).css('padding' : '2px'); es funktioniert Sie haben Recht über Daten. Ich hatte schon hundert verschiedene Dinge ausprobiert, und das war mein letzter Versuch, bevor ich hier fragte.

0 Stimmen

Basierend auf Ihrem Beispiel (das übrigens großartig ist, danke dafür) habe ich dies getan: $(get_elem_hierarchy()).css($('#css_edit textarea').val()); Mein Protokoll zeigt "padding, 2px", aber es funktioniert immer noch nicht Mein Ziel ist es, in der Lage sein, etwas wie padding eingeben: 2px; in die Textarea und nicht in einzelne Eingabefelder

0 Stimmen

Ich habe ein Beispiel mit einer Textarea aktualisiert, die mehrere CSS-Attribute aufnehmen kann. Geben Sie sie einfach ein, als ob sie in einer CSS-Datei wären, z. B. background-color: red; font-size: 20px; ,etc.

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