2009-07-30 2 views
2

J'ai un div dans un fichier html défini comme suit:Comment utiliser jQuery pour lire/écrire les valeurs d'un élément défini en externe dans la classe css?

<div id="rangeTabAll"></div> 

Dans une feuille de style externe défini I définir le style suivant.

#rangeTabAll{ 
    top:45px; 
    left:124px; 
    width:186px; 
    height:114px; 
    display:none; 
    background:#ffffff url(../images/rangetab0.jpg) no-repeat; 
} 

Comment lire/écrire la valeur d'arrière-plan à l'aide de jQuery? Le

$('#rangeTabAll').css('background') 

méthode ne fonctionnera pas parce que ce n'est pas un style en ligne. Et

$('#rangeTabAll').attr('class') 

est indéfini.

Je peux le faire avec javascript tout simplement mais je me demande comment cela se fait via jQuery.

+0

O.k donc Blixt a raison.Mon erreur de blocage après son conseil est une fichue faute de frappe;) Quel est le problème avec cette ligne? [Rhétorique] $ (plaque) .css ("background-image" ", 'url (../ images/rangeimmtab' + imgId + '.jpg)'); Dois-je supprimer l'édition et ce commentaire? Est-ce qu'il ajoute une valeur pour la prochaine personne? – rism

+0

Modifier supprimé car il n'offrait aucune valeur supplémentaire. – rism

Répondre

6

background est une propriété CSS « ​​magique » qui est étendu à toutes les différentes propriétés background-*, telles que background-image, background-color, background-repeat ...

Pour les obtenir dans jQuery vous appelleriez $('#rangeTabAll').css('backgroundColor') et ainsi de suite. Notez le camelCase au lieu de séparer les mots avec des tirets.

Je viens de remarquer que jQuery convertit background-color en backgroundColor etc. pour vous, donc vous n'aurez pas à vous en soucier. Vous pouvez également faire $('#rangeTabAll').css('background-color').

+0

Salut merci, cela m'a permis de lire la propriété et techniquement mis la propriété, mais pas de changement visuel. S'il vous plaît voir mon edit pour une explication plus complète. – rism

+2

Notez que les chemins relatifs dans votre JavaScript sont relatifs au document en cours, tandis que les chemins relatifs dans votre CSS sont relatifs au chemin de la feuille de style. Donc, si vous venez de réutiliser le chemin de votre feuille de style, vous essayez peut-être d'obtenir l'image du mauvais dossier. Mais comme vous pouvez le voir, le JavaScript fonctionne. Il définit la valeur à ce que vous voulez. Il n'y a rien qui puisse être fait pour que le code fonctionne mieux. L'erreur est soit dans le chemin de l'image ou dans votre CSS (quelque chose obscurcissant/écrasant l'arrière-plan.) – Blixt

+0

Aussi, vous devriez utiliser Firefox avec Firebug pour inspecter ces valeurs et voir ce qui s'est mal passé (il peut même vous montrer le chemin exact que Firefox a essayé Pour obtenir l'image d'arrière-plan et si elle a réussi/échoué.) Obtenez Firebug ici: https://addons.mozilla.org/en-US/firefox/addon/1843 – Blixt

2

Rappelez-vous:

propriétés CSS sténographie (par exemple marge, fond, frontière) ne sont pas pris en charge. Par exemple, si vous souhaitez récupérer la marge rendu, utilisez: $ (élém) Css ('marginTop ') et $ (élém) Css (' marginRight'), et ainsi de suite.

de jQuery Documentation: CSS

dans votre exemple, l'arrière-plan est un raccourci pas pris en charge, vous devez écrire la pleine propriété.

pour

#rangeTabAll { 
    top:45px; 
    left:124px; 
    width:186px; 
    height:114px; 
    display:none; 
    background:#ffffff url(../images/rangetab0.jpg) no-repeat; 
} 

vous écririez:

$("#rangeTabAll").css("backgroundColor", "myNewValue"); 
$("#rangeTabAll").css("backgroundImage", "myNewValue"); 
$("#rangeTabAll").css("backgroundRepeat", "myNewValue"); 

ou

$("#rangeTabAll").css("background-color", "myNewValue"); 
$("#rangeTabAll").css("background-image", "myNewValue"); 
$("#rangeTabAll").css("background-repeat", "myNewValue"); 
+0

Merci beaucoup. Tu as raison. Désolé je ne peux pas accepter plus d'un. – rism

+0

C'est un bug! Nous devons signaler à Jeff Atwood, ehehehe;) – balexandre

1

Pourquoi ne pas définir votre arrière-plan alternatif en tant que classe CSS et utiliser $('#rangeTabAll').addClass('alternate') et $('#rangeTabAll').removeClass('alternate')?

+0

qui est juste une opinion, devrait être dans les commentaires, ce n'est pas la question ... non? -> La question est: "Comment lire/écrire la valeur d'arrière-plan en utilisant jQuery?" – balexandre

+1

Um, non, c'est une autre façon de résoudre le problème. – eyelidlessness

+0

En outre, je préconise de meilleures pratiques en suggérant de séparer la logique du programme de la conception. – eyelidlessness

Questions connexes