jquery – 如何通过ajax将css注入文档?

前端之家收集整理的这篇文章主要介绍了jquery – 如何通过ajax将css注入文档?前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
所以我通过 jquery的ajax方法获取数据.检索到的数据如下所示:
  1. <html>
  2. <head>
  3. <style>
  4. body {
  5. color: red;
  6. font-weight: bold;
  7. }
  8.  
  9. #someElement {
  10. color: blue;
  11. padding: 1em
  12. }
  13. </style>
  14. </head>
  15. <body>
  16. <div id="header">Super</div>
  17. <p>blah blah blah</p>
  18. <div id="footer">Stuff</div>
  19. </body>
  20. </html>

如何提取样式并将其插入到执行ajax调用的当前文档中?我尝试了各种各样的jquery咒语,但它没有去.我现在通过正则表达式提取css但不确定如何将css放入当前页面

  1. $.ajax({
  2. url: '/template.html',success: function(data) {
  3. $("#header").html( $(data).find('#header').html() );
  4. $("#footer").html( $(data).find('#footer').html() );
  5.  
  6. var re = /<style>((?:[\n\r]|.)+)<\/style>/m;
  7. var css = re.exec(data);
  8.  
  9. // What to do with the css??
  10.  
  11. return;
  12. }
  13. });

我最初有一个样式表,然后简单地执行以下操作:

  1. if($.browser.msie) {
  2. $('head').html(
  3. '<link rel="stylesheet" href="http://c.this/template.css" type="text/css" />'+
  4. $('head').html()
  5. );
  6. }
  7. else {
  8. $('head').prepend('<link rel="stylesheet" href="http://c.this/template.css" type="text/css" />');
  9. }

这工作除了在IE8中它会导致一些问题.

解决方法

您可以使用.filter()来查找< style />而不是使用正则表达式. tag,从那里只需使用document.getElementsByTagName(“head”)[0]来附加HTMLStyleElement
  1. $.ajax({
  2. type: 'POST',url: "/echo/html/",data: {
  3. html: postHtml
  4. },success: function(data) {
  5. var style = $(data).filter("style").get(0);
  6. document.getElementsByTagName("head")[0].appendChild(style);
  7. $("#header").html($(data).filter('#header').html());
  8. $("#footer").html($(data).filter('#footer').html());
  9. }
  10. });

Working example on jsfiddle

在IE8 / 9,chrome,firefox上测试过

猜你在找的jQuery相关文章