2011-11-03 119 views
6

我发现的所有其他答案仅删除属性的设置,而不是完全删除属性。我正在将一个元素从绝对位置改变为固定位置。我需要删除正确的定位属性,并用margin-right替换它,以便该元素位于其父DIV中。如果没有删除正确的属性,则元素会一直移动到屏幕的右侧,而不是像我需要的那样位于DIV的右侧。任何人都可以提供一个关于如何完成这个的建议?使用Jquery删除CSS属性

回答

13

尝试将其设置为默认值auto

$(element).css('right', 'auto'); 
+1

PS - CSS规范可能已经回答了这个给你 - http://www.w3.org/TR/CSS21/visuren.html#propdef-right – mrtsherman

+0

这真是棒极了!谢谢。 – user981053

+1

比显式的硬编码默认值更好的是一个空字符串(如@Derek所示),可以根据需要应用其他样式表规则。 – Phrogz

2
$('div').css({'right' : '', 'margin-right' : '100px'}); 

如果还是不行,请尝试将有权它是auto

0

默认值尝试设置right0px,然后设置margin-right

$('div').css({'right' : '0px', 'margin-right' : '100px'}); 
0

你可以试试下面的代码

 $.fn.removeCss=function(toDelete) { 

      var props = $(this).attr('style').split(';'); 
      var tmp = -1; 

      for(var p=0; p<props.length; p++) { 
       if(props[p].indexOf(toDelete) !== -1) { 
        tmp=p 
       } 
      } 

      if(tmp !== -1) { 
       props.splice(tmp, 1); 
      } 

      return $(this).attr('style',props.join(';')); 
     } 

example usage: 
$(selector).removeCss('color'); 
1

在我看来最干净的方法是从元素的CSSStyleDeclaration完全删除的财产,而不是只具有某种空的覆盖它/零/默认值:

$(".foo").prop("style").removeProperty("right"); 
$(".foo").prop("style").removeProperty("background-color");