javascript - 使用 JQuery 从 HTML 页面中提取嵌入样式

标签 javascript jquery css ajax

所以,问题来了...

我必须:

  1. 通过带有 AJAX 调用的 REST API 获取 html 页面,
  2. 从该 html 中提取一个具有已知 id 的表格(谢天谢地,它的格式是正确的)
  3. 从样式 block 中提取表格的关联 CSS,
  4. 将表格附加到我页面上的一个 div 中,然后
  5. 重新应用原来的 CSS

因此,我感兴趣的页面部分是:

<style>
 #tableid td.someclass {
  ...
  }
 #tableid td.anotherclass {
  ...
  }
 [etc etc ..]
</style>

<table id="tableid">
 ...
</table>

因此,遍历上述 1、2 和 4 的列表完全没有问题。 3 和 5 是大脑的负担 - 顺便说一句,没有外部样式表可担心,所有内容都在我在单个标签内抓取的页面中。

我想我可以提取整个元素,然后将其附加到我的页面 - 但这很困惑并且可能会导致不需要的副作用。我想做的只是提取适用于 #tableid 的样式,然后将它们应用到附加到我的 div 的表中。

有没有一种优雅的方式来做到这一点?

最佳答案

您可以使用标准的 jQuery 查找器从标题中提取样式:

var styles = $('head style').text();

然后对其运行正则表达式:

var tableID     = 'tableid',
    pattern     = new RegExp('#'+ tableID + '[^}]+}', 'g'),
    tableStyles = styles.match(pattern);

这应该为您的表格 ID 提供一组样式。现在您可以将这些样式附加到当前文档的头部:

$('<style/>', { text: tableStyles.join('\n') }).appendTo('head');

您的用例可能需要一些微调,但这应该可以大致满足您的需求。

关于javascript - 使用 JQuery 从 HTML 页面中提取嵌入样式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13338898/

相关文章:

javascript - 像win8 metro一样按下导航器

javascript - 如何使用 jQuery 使某些单选按钮强制使用文本框?

javascript - 为什么复选框在 jquery 中没有取消选中

html - 无法在顶部 div 滚动

jquery - 在 CSS 中隐藏 Div 容器

JavaScript 访问父元素

javascript - 正则表达式包括不需要的数字

javascript - 在运行时将对象传递给 javascript 函数

javascript - jQuery:如何获取所选单元格的列标题和行标题

jquery - daterangepicker 年月难看