使用jQuery删除CSS“top”和“left”属性

时间:2012-02-22 16:30:17

标签: jquery

我正在构建一个可拖动的地图,当拖动地图时,元素会被赋予“左”和“顶部”属性,每个属性的值都是如此......

<div class="map" style="top:200px; left:100px;">Map</div>

我有一个按钮,我想在点击时从div上的内联样式中删除top和left属性,是否可以使用jquery?

13 个答案:

答案 0 :(得分:427)

如果你想专门删除top和left属性并留下其他属性,你可以这样做:

$('.map').css('top', '').css('left', '');

或者,更短的等价物:

$('.map').css({
    'top': '',
    'left': ''
});

答案 1 :(得分:137)

CSS topleft的默认值为auto,因此根据您尝试执行的操作设置它们可能相同:

$('.map').css('top', 'auto').css('left', 'auto');

您还可以选择完全删除style属性:

$('.map').removeAttr('style');

但是,如果您正在使用其他jQuery UI组件,那么这些组件可能需要您不希望删除的内联样式,因此请谨慎使用。

答案 2 :(得分:37)

您可以执行以下操作删除style属性中的所有内容:

$('.map').removeAttr('style');

您可以执行以下操作删除特定style

$('.map').css('top', '');
$('.map').css('left', '');

答案 3 :(得分:30)

只需使用空字符串设置CSS属性,例如使用以下代码:

$('#mydiv').css('color', '');

请参阅jQuery Documentation on CSS

答案 4 :(得分:6)

  1. 转到此处:jQuery API
  2. Ctrl + F表示&#39;删除&#39;
  3. 阅读:
  4.   

    将样式属性的值设置为空字符串 - 例如$(   &#34;#mydiv&#34; ).css(&#34; color&#34;,&#34;&#34;) - 从元素中删除该属性   如果已经直接应用,则是否为HTML样式   属性,通过jQuery的.css()方法,或通过直接DOM   操纵风格属性。

    文档为您提供了当前推荐的方法,可以为您实现的目标提供方法,这通常可以节省您的时间,因为您不必在堆栈溢出时来回读取火焰战争(无论如何多么有趣/有启发性!)。

答案 5 :(得分:5)

this JQuery bug report

element.removeAttr('style')
在基于Webkit的浏览器中不能始终如一地工作。例如,我在iOS 6.1上遇到了这个问题。修复方法是使用:
element.attr('style', '')

答案 6 :(得分:2)

如果你想删除所有这些,你可以

$('.map').removeAttr('style');

答案 7 :(得分:2)

$.fn.removeCss=function(prop){
   if(!prop){
          return $(this).removeAttr('style').removeAttr('class');
     }
    else{
         return $(this).css(prop,null);
    }

}

然后如果你想删除css prop(s):

    $('#mydiv').removeCss('color');
//To remove all prop Css
    $('#mydiv').removeCss();

答案 8 :(得分:1)

在我看来,最干净的方法是从元素的CSSStyleDeclaration中完全删除属性,而不是仅使用某种null / zero / default值覆盖它:

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

答案 9 :(得分: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){

   delete props[tmp];
}

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

}

使用此插件安全删除!

$( 'myDiv')removeCss( '颜色');

答案 10 :(得分:0)

有些款式无法轻易删除。(想到溢出)

解决方法是创建2个不同的类,并添加/删除包含所需样式的类。

不是可以轻松删除/禁用的样式属性的最佳解决方案。

答案 11 :(得分:0)

 $("#map").css("top", "0"); 
 $("#map").css("left", "0"); 

答案 12 :(得分:0)

要删除css样式,请为样式

指定一个空字符串

在这种情况下

$('.map').css({top:'',left:''});