javascript - 数据属性的 CSS 不会刷新/重绘

标签 javascript css mobile-safari repaint custom-data-attribute

在 HTML5/JS 应用程序中,我们有一个 View ,其样式取决于元素的 data-attribute:

喜欢

<li data-level="0"></li>

<li data-level="1"></li>

CSS

li[data-level^="1"] {
  /* some styles */
}

这似乎在页面重新加载的任何地方都工作得很好。

但是当通过 JS 以编程方式设置数据属性时,CSS 属性会在所有相关的桌面浏览器中呈现,但不会在移动 safari 中呈现。

JS 部分如下所示:

this.$el.attr('data-level', this.model.getLevel())

关于如何强制应用这些属性(刷新/重绘某些东西)有什么想法吗?

我想避免使用 class 属性和不同的类,因为事情比这里显示的更复杂......

最佳答案

好的,更改数据属性似乎不会在所有浏览器中触发元素的重绘!?

然而,改变 class 属性确实如此。 一种解决方法,但可以解决问题。

this.$el
       .attr('data-level', this.model.getLevel())
       .addClass('force-repaint')
       .removeClass('force-repaint');

如下所示:Changing a data attribute in Safari, but the screen does not redraw to new CSS style

关于javascript - 数据属性的 CSS 不会刷新/重绘,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17967307/

相关文章:

javascript - 删除 <a> 中不包含某个 "href"值的 <li> 元素

Firefox 中的 CSS3 3D Transform Cube 渲染问题

javascript - classlist.toggle() 在移动 Safari 上无法按预期工作

javascript - 用于更新输入值的 Jquery Keyup 脚本不起作用

javascript - 悬停时更改 z-index(弹跳 div)

jquery - 使用 JQuery 将附加行中某些单元格的背景颜色更改为表

html - 在包含 float 子 div 的父 div 中水平滚动

css - 手机网站捉襟见肘

ios - UIWebView 中的右填充/边距无法正常工作(嵌入式移动 safari)

javascript - 如何使用 angularjs 和特定的数据结构创建简单的树可折叠/可折叠 View