ajout d'un fichier css avec jquery

Je crée un popupwindow et je veux ajouter un fichier css à ce popupwindow ci-dessous est le code pour popupwindow. J'ai un javascript avec crée une fenêtre contextuelle.

<a href="popupwindowcontent.xhtml" title="Print" class="popupwindow">Print1</a>

Maintenant, je veux ajouter un fichier css à cette fenêtre contextuelle. J'ai essayé quelque chose comme

$('.popupwindow').append('<link rel="stylesheet" href="css/style2.css" type="text/css" />');


 $('head').append('<link rel="stylesheet" href="css/style2.css" type="text/css" />');

Mais ne fonctionne pas.

Merci

49
demandé sur Jay 2011-04-15 22:05:52

8 réponses

$('head').append('<link rel="stylesheet" href="style2.css" type="text/css" />');

Cela devrait fonctionner.

135
répondu Etienne Dupuis 2011-04-21 17:56:44

Voici comment j'ajoute css en utilisant jQuery ajax. Espérons que cela aide quelqu'un..

$.ajax({
            url:"site/test/style.css",
            success:function(data){
                 $("<style></style>").appendTo("head").html(data);
            }
        })
12
répondu Dilip Rajkumar 2012-09-12 12:32:02
    var css_link = $("<link>", {
        rel: "stylesheet",
        type: "text/css",
        href: "yourcustomaddress/bundles/andreistatistics/css/like.css"
    });
    css_link.appendTo('head');
9
répondu zuzuleinen 2013-11-19 08:58:08

Juste mes quelques cents... parfois, il est bon d'être sûr qu'il n'y a pas de doublons... nous avons donc la fonction suivante dans la bibliothèque utils:

jQuery.loadCSS = function(url) {
    if (!$('link[href="' + url + '"]').length)
        $('head').append('<link rel="stylesheet" type="text/css" href="' + url + '">');
}

Comment utiliser:

$.loadCSS('css/style2.css');
4
répondu Mr. Pumpkin 2015-03-30 21:24:16

Votre problème est que votre sélecteur est pour un élément d'ancrage <a>. Vous traitez la balise <a> comme si elle représentait la page, ce qui n'est pas le cas.

$('head') fonctionnera tant que ce sélecteur est exécuté par la page qui a besoin du css.

Pourquoi ne pas simplement ajouter le fichier css à la page en question. Une raison particulière de tenter cela dynamiquement à partir d'une autre page? Je ne suis même pas familier avec un moyen d'injecter css à des pages distantes comme celle-ci ... on dirait que ce serait un trou de sécurité majeur.

ADDENDUM à votre raisonnement:

Ensuite, vous devez simplement passer un paramètre à la page, le lire en utilisant javascript, puis faire tout ce qui est nécessaire en fonction du paramètre.

1
répondu Feisty Mango 2011-04-15 18:14:00

Essayez de le faire dans l'autre sens.

$('<link rel="stylesheet" href="css/style2.css" type="text/css" />').appendTo('head');
1
répondu Mark Costello 2011-04-15 18:14:53

Je ne pense pas que vous pouvez attacher dans une fenêtre que vous instanciez... Je sais que vous ne pouvez pas le faire si les url sont sur des domaines différents (XSS et tout ce jazz), mais vous pouvez parler à partir de cette fenêtre et accéder aux éléments de la fenêtre parent en supposant qu'ils sont sur le même domaine. votre meilleur pari est d'attacher la feuille de style à la page que vous chargez, et si cette page n'est pas sur le même domaine, (par exemple en essayant de redessiner la page de quelqu'un d'autre,) vous ne pourrez pas.

0
répondu FatherStorm 2011-04-15 18:15:32

Avez-vous simplement essayé d'utiliser l'attribut media pour votre référence css?

<link rel="stylesheet" href="css/style2.css" media="print" type="text/css" />

Ou définissez-le à l'écran si vous ne voulez pas que la version imprimée utilise le style:

<link rel="stylesheet" href="css/style2.css" media="screen" type="text/css" />

De cette façon, vous n'avez pas besoin de l'ajouter dynamiquement.

0
répondu fehays 2011-04-15 18:35:23