jquery - jsdom和jquery修改dom元素的css样式

标签 jquery node.js jsdom

我一直在我的 node.js 服务器上使用 jdom 和 jquery,并通过以下代码观察到以下奇怪的行为:

var divs = window.$('div').each(function() {
              //console.log(" -", $(this));
              $(this).css('background-color','green');
              $(this).addClass('sel');
              this.style.backgroundColor = "green";
            });

我尝试使用我能想到的各种方式向 html 页面上的 div 添加一些样式(背景颜色为绿色)。上述所有尝试(我也一一尝试,看看是否有任何一个独立工作)产生了相同的结果,相当于:<div id="somedivid" style="">

我想知道这是否是一个错误,因为它不会向其中写入任何样式(引号内始终为空),但如果您检查原始文档,则当这些 div 之前没有样式属性时,会添加样式属性。添加我在自定义 css 样式 block 中在页面顶部手动创建的类 sel 确实有效,但是,正如您所认为的那样。问题是我真的希望能够在使用 jsdom 时动态更改单个对象的样式。如果这是一个错误或者我是否忽略了某些内容,有人有任何想法吗?

顺便说一句,这段代码可以在运行标准 jquery 的普通浏览器中正常运行,正如预期的那样,因此它似乎可能是 jsdom 的实现。

最佳答案

您错过了一种方法......也许这个有效:

this.setAttribute('style', 'background-color: green;');

或者:

this.setAttribute('class', 'sel');

如果之前已经定义了“sel”类,则为后者。

如果它有效,则可能意味着“jsdom”没有序列化当前计算的样式,而只是解析的样式(在 HTML 标记中)。我相信这是预期的行为。

关于jquery - jsdom和jquery修改dom元素的css样式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13591136/

相关文章:

node.js - `window` 未定义 - Angular CLI

javascript - 如何在 Javascript/Node.js Azure Function 中使用需要 DOM 和窗口的导入脚本

javascript - jsdom.env() 和 jsdom.jsdom 有什么区别?

jquery - 单击三个div后如何删除类?

c++ - 如何从 NanAsyncWorker 返回一个新对象?

javascript - 使用 JavaScript 提交表单

php - Angularjs 是客户端还是服务器端或两者兼而有之

javascript - 在jsdom加载的脚本中设置全局变量

javascript - DropzoneJS : Preview selected image before upload in div as <img>

php - 从复选框检索数组值并动态构建查询以选择内容