删除CSS";top";及;“左”;使用jQuery的属性

删除CSS";top";及;“左”;使用jQuery的属性,jquery,Jquery,我正在构建一个可拖动的映射,当映射被拖动时,元素被赋予一个“left”和“top”属性,每个属性都有相应的值 <div class="map" style="top:200px; left:100px;">Map</div> Map 我有一个按钮,我想在单击时从div上的内联样式中删除top和left属性,jquery是否可以这样做 如果您想删除所有内容,可以执行以下操作 $('.map').removeAttr('style'); 如果要专门删除顶部和左侧属性并保

我正在构建一个可拖动的映射,当映射被拖动时,元素被赋予一个“left”和“top”属性,每个属性都有相应的值

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

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

如果您想删除所有内容,可以执行以下操作

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

如果要专门删除顶部和左侧属性并保留其他属性,可以执行以下操作:

$('.map').css('top', '').css('left', '');
或者,更短的等效值:

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

通过执行以下操作,可以删除
样式
属性中的所有内容:

$('.map').removeAttr('style');
$('.map').css('top', '');
$('.map').css('left', '');
您可以通过执行以下操作删除特定的
样式
s:

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

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

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

请参阅。

CSS和的默认值是
自动
,因此根据您尝试执行的操作,将它们设置为该值可能是等效的:

$('.map').css('top', 'auto').css('left', 'auto');
您还可以选择完全删除
style
属性:

$('.map').removeAttr('style');
但是,如果您使用的是其他jQuery UI组件,则这些组件可能需要内联样式,您不希望删除这些样式,因此请谨慎操作。

每个元素。removeAttr(“样式”)在基于Webkit的浏览器中无法始终工作。例如,我在iOS 6.1上遇到了这个问题。修复方法是使用:element.attr('style','')

element.attr('style', '') 然后,如果要删除css道具:

$.fn.removeCss=函数(toDelete){
var props=$(this.attr('style').split(';');
var-tmp=-1;

对于(var p=0;p有一些样式不容易删除。(想到溢出)

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

对于可以轻松删除/禁用的样式特性,这不是最佳解决方案

  • 到这里:
  • Ctrl+F表示“删除”
  • 阅读:
  • 将样式属性的值设置为空字符串-例如$( “#mydiv”).css(“color”,”)-从元素中删除该属性 如果已经直接应用,无论是HTML样式 属性,通过jQuery的.css()方法或直接DOM 样式属性的操作


    这些文档为您提供了当前推荐的方法来完成您想要完成的任务,这通常可以节省您的时间,因为您不必反复阅读堆栈溢出上的flame wars(无论这多么有趣/有启发性!)。

    要删除css样式,请为样式指定一个空字符串

    在这种情况下

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

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

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

    是的。至少您可以将它们设置为空值,这样可以删除它。可能重复:。那里的答案可能对您有所帮助。请注意,
    '
    不仅计算为空值
    '
    一次只删除一个css属性:var cssObject=
    $('selector').prop('style');cssObject.removeProperty('top'));cssObject.removeProperty('left');
    仅对于记录,设置为空并不总是有效:“将样式属性的值设置为空字符串……但是,它不会删除已在样式表或元素中使用CSS规则应用的样式。”-请参阅通常,添加到样式属性的此类覆盖用于将值从默认css值更改为off;将其设置为auto不会将其重置为默认值。这意味着auto实际上并不相同,因此根本没有该值。因此正确的答案是$('map')。css('top','');此答案是错误的,您没有删除属性,而是用其他内容替换它们。此外,删除整个样式标记没有多大意义,可能需要保留一些属性并删除其他属性。wtrevino的答案是正确的。这不是一个必要的选项,因此有了它就很好了!:)对于记录的用户名等字段,@wtrevino的答案应该是此处接受的答案。在某些情况下,此特定解决方案对我有效,但如果可以,我会删除此答案。不幸的是,因为它已被接受,所以不允许我使用。这不是正确的答案…@wtrevino答案是最正确的。此答案只会如果要从元素中删除所有静态样式,请执行以下操作…在大多数情况下,这不是您想要执行的操作。不确定为什么这不是可接受的答案。实际可接受的答案是不正确的,因为它实际上没有从对象(即问题的标题)中删除CSS属性。这是一个比所选答案更好的答案。是的。This是正确的答案。一开始没有意义,因为它看起来像“.css('top',''”简单地创建了一个空的'top'规则,但是没有,它完全删除了它。这是迄今为止最好的答案。但我想我找到了另一个。我尝试了一些不同的。
    .css('left',未定义);
    没有改变任何东西。传递null也没有做任何事情。但是
    .css('left',false);
    删除该属性。正如其他人所建议的,这应该被认为是正确的答案。@Viktor注意,文档明确说明使用空字符串。我想知道false是否会起作用,因为某些未记录的类型强制可能会在将来消失?这会将其设置为0,不会删除该属性
     $("#map").css("top", "0"); 
     $("#map").css("left", "0"); 
    
    $('.map').css({top:'',left:''});
    
    $(".foo").prop("style").removeProperty("top");
    $(".foo").prop("style").removeProperty("left");
    $(".foo").prop("style").removeProperty("background-color");