Answers:
将您的CSS属性放入类中,然后执行以下操作:
$("#displayPanel div").live("click", function(){
$(this).addClass('someClass');
});
然后在您的“其他功能”执行以下操作:
$("#myButton").click(function(){
$("#displayPanel div").removeClass('someClass');
});
<div style="xxx"/>
仍然是CSS……这不是一个很好的方法,但是确实有效。
addClass
or removeClass
或removeAttr('style')
。
您可以删除元素上的特定css,如下所示:
$(this).css({'background-color' : '', 'font-weight' : ''});
尽管我同意karim的观点,但您可能应该使用CSS类。
如果要删除使用javascript手动添加的所有内联样式,则可以使用removeAttr方法。最好使用CSS类,但您永远不会知道。
$("#displayPanel div").removeAttr("style")
.css('style-name', 'style-value')
功能向元素添加了内联样式-并且对于动态更新样式至关重要。拖放脚本可能会更改绝对定位元素的top
和left
样式-使用类是不切实际的实例。
您可以通过以下方式删除内联属性:
$(selector).css({'property':'', 'property':''});
例如:
$(actpar).css({'top':'', 'opacity':''});
上面基本上提到了这一点,并且确实可以解决问题。
顺便说一句,这在需要动画后清除状态的情况下很有用。当然,我可以编写六个类来解决这个问题,或者可以使用基类和#id进行一些数学运算,并清除动画应用的内联样式。
$(actpar).animate({top:0, opacity:1, duration:500}, function() {
$(this).css({'top':'', 'opacity':''});
});
jQuery.fn.extend
({
removeCss: function(cssName) {
return this.each(function() {
var curDom = $(this);
jQuery.grep(cssName.split(","),
function(cssToBeRemoved) {
curDom.css(cssToBeRemoved, '');
});
return curDom;
});
}
});
/*example code: I prefer JQuery extend so I can use it anywhere I want to use.
$('#searchJqueryObject').removeCss('background-color');
$('#searchJqueryObject').removeCss('background-color,height,width'); //supports comma separated css names.
*/
要么
//this parse style & remove style & rebuild style. I like the first one.. but anyway exploring..
jQuery.fn.extend
({
removeCSS: function(cssName) {
return this.each(function() {
return $(this).attr('style',
jQuery.grep($(this).attr('style').split(";"),
function(curCssName) {
if (curCssName.toUpperCase().indexOf(cssName.toUpperCase() + ':') <= 0)
return curCssName;
}).join(";"));
});
}
});
实际上,这是我必须进行基于jquery的复杂样式时发现的最佳方法,例如,如果您有一个需要显示的模式,但它需要计算页面偏移量以获得正确的参数,这些参数将需要输入jQuery(“ x”)。css({})函数。
因此,这里是样式的设置,即基于各种因素计算出的变量的输出。
$(".modal").css({ border: "1px solid #ccc", padding: "3rem", position: "absolute", zIndex: 999, background: "#fff", top: "30", visibility: "visible"})
为了清除那些样式。而不是像
$(".modal").css({ border: "", padding: "", position: "", zIndex: 0, background: "", top: "", visibility: ""})
简单的方法是
$(".modal").attr("style", "")
当jquery操作dom上的元素时,将样式写入“ style”属性中的元素,就好像您是内联编写样式一样。您要做的就是清除该属性,并且该项目应重置为原始样式
希望这可以帮助
我也有相同的概率,只是删除值
<script>
$("#play").toggle(function(){$(this).css("background","url(player.png) -100px 0px no-repeat");},
function(){$(this).css("background","");});
</script>
我使用了user147767的第二个解决方案
但是,这里有一个错字。它应该是
curCssName.toUpperCase()。indexOf(cssName.toUpperCase()+':')<0
不<= 0
我还将此条件更改为:
!curCssName.match(new RegExp(cssName +“(-。+)?:”),“ mi”)
有时我们会在jQuery上添加css属性,并且以不同的方式为不同的浏览器添加属性(即,对于Firefox,border属性将添加为“ border”,对于IE,则将其添加为“ border-top”,“ border-bottom”等)。
我修改user147767的解决一下,以便能够使用strings
,arrays
并objects
作为输入:
/*!
* jquery.removecss.js v0.2 - https://stackoverflow.com/a/17196154/1250044
* Remove multiple properties from an element in your DOM.
*
* @author Yannick Albert | #yckart
* @param {Array|Object|String} css
*
* Copyright (c) 2013 Yannick Albert (http://yckart.com)
* Licensed under the MIT license (http://www.opensource.org/licenses/mit-license.php).
* 2013/06/19
**/
$.fn.removeCss = function (css) {
var properties = [];
var is = $.type(css);
if (is === 'array') properties = css;
if (is === 'object') for (var rule in css) properties.push(rule);
if (is === 'string') properties = css.replace(/,$/, '').split(',');
return this.each(function () {
var $this = $(this);
$.map(properties, function (prop) {
$this.css(prop, '');
});
});
};
// set some styling
$('body').css({
color: 'white',
border: '1px solid red',
background: 'red'
});
// remove it again
$('body').removeCss('background');
$('body').removeCss(['border']);
$('body').removeCss({
color: 'white'
});