如何使用 jQuery 只移除一个样式属性?

我有一个与此属性 style="-moz-user-select:none; position:static !important;"的 div。 我需要移除 -moz-user-select 尝试与 $(selector).css(),但我不知道什么值设置,因为它是 "none"

143366 次浏览

Css ()的文档指出,将样式属性设置为空字符串将删除该属性,如果该属性不驻留在样式表中:

设置样式属性的值 转换为空字符串ー例如。 $('#mydiv').css('color', '')ー移除 元素的属性 已经被直接应用, 是否在 HTML 样式属性中, 通过 jQuery 的 .css()方法,或者 通过直接对 样式属性。但是, 删除已应用的样式 在样式表中使用 CSS 规则或 <style>元素。

因为你的风格是内联的,你可以写:

$(selector).css("-moz-user-select", "");

您还可以将“-moz-user-select: none”替换为“-moz-user-select: Heritage”。这将从任何父样式继承样式值,如果没有定义父样式,则从默认样式继承样式值。

我知道这个问题是关于 jQuery 的,但是我想添加一个解决方案(对于那些像我一样,从谷歌跌跌撞撞来到这里的人来说) :

(根据我的 GIST 要点 )

下面是该方法的一个分解,但是删除注释之后,它就变得非常简单了,只有一行程序 < strong > split-> filter-> join

const removeStyleProp = (elm, prop) =>
elm.style.cssText = elm.style.cssText // "top: 0px; bottom: 50px; text-align: right;"
.split('; ') // ["top: 0px", "bottom: 50px", "right: 2px", "text-align: right;"]
.filter(p => !p.startsWith(prop) ) // ["top: 0px", "bottom: 50px", "text-align: right;"]
.join(';');


// usage:
removeStyleProp(test, 'right')
console.log( test.style.cssText )
<div id='test' style='top:0;right:5px;bottom:50px;right:2px;text-align:right;'></div>

Alternately could also be done with Regex