2012-10-01 2 views
0
var data = $("span", this).html(); /*grab all */ 
$calPopup.stop().fadeTo(300,1); 
$calPopup.html(data); 

Je veux faire quelque chose comme:JQuery CSS sur le texte html()

data.css("font-size","10pt"); 

Mais si je fais cela, le texte HTML ne semble même pas. L'inspecteur de Chrome dit ceci:

Uncaught TypeError: Object *** has no method 'css' 

Comment puis-je appliquer une modification CSS au texte?

+2

Vous mélangez chaîne avec HTML et objet jQuery.Essayez de lire [docs jQuery] (http://api.jquery.com/) d'abord. – VisioN

Répondre

5

La fonction jQuery .html() renvoie un St anneau, pas un objet jQuery, donc il n'y a pas de fonction .css() à utiliser. Toutefois, si vous voulez appliquer ce style CSS à tous ces <span> éléments, il est aussi simple que d'appeler votre fonction .css() directement sur l'objet jQuery qui est les a sélectionnés:

$('span', this).css('font-size', '10pt'); 

Notez que j'ai retiré la déclaration de variable parce que, basé sur le code fourni, il semble inutile. Notez également que la fonction .html() renverra le code HTML du premier élément correspondant seulement, pas tous, donc si vous avez plus d'un élément <span>, vous obtiendrez uniquement le code HTML du premier élément.

Pour répondre modifications à la question:

var data = $("span", this).clone().css('font-size', '10pt'); 
$calPopup.stop().fadeTo(300,1); 
$calPopup.empty().append(data); 
+0

Pouvez-vous voir mon code mis à jour. J'oublie de dire que je prends les données et les publie quelque part. Comment changera-t-il votre code, s'il y a lieu? –

+0

@MichaelBenneton Il serait plus facile de cloner les éléments '', d'appeler '.css()' sur les versions clonées, puis de les afficher. Je mettrai à jour ma réponse avec du code pour le faire. –

+0

Ah ça a parfaitement fonctionné. Merci beaucoup. –

0

Ne pas appliquer le css sur le html ... Vous devez l'appliquer sur la durée:

var data = $("span", this).css("font-size","10pt").html(); /*grab all */ 
1

vous appliquez la méthode css() à la chaîne retournée par la méthode html() et non l'élément lui-même.

Do à la place

var data = $("span", this).css("font-size","10pt").html(); 

ou, mieux encore, garder hors de style de javascript: il suffit affecter une classe à votre élément span et laisser une règle css donner le style correct

var data = $("span", this).addClass("yourclass").html(); 

CSS

.yourclass { 
    font-size : 10pt; 
} 
+0

ce code semble parfaitement correct, mais pour une raison quelconque, il ne fonctionne tout simplement pas. L'inspecteur ne me donne aucune erreur non plus. Je sais que c'est très large, en disant "ne fonctionne pas", mais des idées? –

+0

s'il vous plaît nous montrer vos tentatives sur une page de démonstration/jsfiddle.net/jsbin.com exemple et mettre à jour votre question avec un lien – fcalderan

0

données d'emballage d'essai avec $() pour le convertir en un objet jQuery

$(data).css('font-size','10pt'); 
0

Il vous suffit d'appliquer la mise en forme à la durée réelle élément. .html() obtient le HTML dans un format de chaîne, ainsi .css ne fonctionnera pas.

Si vous voulez faire Css sur la durée entière, il suffit de changer votre variable var data = $("span", this);

1

La méthode html() renvoie le texte HTML du premier élément apparié donné dans le sélecteur. Ici, il retourne juste le texte et non jQuery objet

donc mieux d'abord trouver l'objet jQuery et appliquez CSS

var data = $("span", this); 
data.css("font-size","10pt");