Удалить атрибуты CSS "сверху" и "слева" с помощью jQuery

Im создавая перетаскиваемую карту, когда при перетаскивании карты элемент получает атрибут "left" и "top" со значениями для каждого из них так...

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

У меня есть кнопка, в которой я хочу удалить атрибут top и left из встроенного стиля в div при нажатии, возможно ли это с помощью jquery?

Ответ 1

Значения по умолчанию для CSS top и left являются auto, поэтому они могут быть эквивалентны в зависимости от того, что вы пытаетесь сделать:

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

У вас также есть возможность полностью удалить атрибут style:

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

Однако, если вы используете другие компоненты пользовательского интерфейса jQuery, для них могут потребоваться встроенные стили, которые вы не хотите удалять, поэтому будьте осторожны.

Ответ 2

Если вы хотите специально удалить атрибуты верхнего и левого и оставить остальных, вы можете сделать это:

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

Или более короткий эквивалент:

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

Ответ 3

Вы можете удалить все содержимое в атрибуте style, выполнив:

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

И вы можете удалить конкретный style, выполнив:

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

Ответ 4

Просто установите свойство CSS пустой строкой, например, со следующим кодом:

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

См. Документация jQuery для CSS.

Ответ 5

  • Перейдите сюда: jQuery API
  • Ctrl + F для 'remove'
  • Читайте:

Установка значения свойства style в пустую строку - например. $( "#mydiv" ).css( "color", "") - удаляет это свойство из элемента если он уже был применен непосредственно, будь то в стиле HTML атрибут через метод jQuery.css() или через прямой DOM манипуляции с свойством style.

Документы дают вам текущий рекомендованный подход к тому, что вы пытаетесь выполнить, что часто может сэкономить ваше время, потому что вам не нужно читать назад и вперед пламенные войны при переполнении стека (независимо от того, насколько интересно/просвещать это может быть!).

Ответ 6

Per этот отчет об ошибке JQuery

element.removeAttr('style')
не работает последовательно в браузерах на основе Webkit. Например, я столкнулся с этой проблемой на iOS 6.1. Исправление состоит в том, чтобы использовать:
element.attr('style', '')

Ответ 7

Если вы хотите удалить все это, вы можете сделать

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

Ответ 8

$.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();

Ответ 9

$.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

Есть несколько стилей, которые не могут быть легко удалены. (переполнение приходит на ум)

Обходным решением было бы создать 2 разных класса и добавить/удалить тот, который содержит желаемый стиль.

НЕ лучшее решение для свойств стиля, которое можно легко удалить/отключить.

Ответ 11

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

Ответ 12

Чтобы удалить стили css, присвойте пустую строку стилю

в этом случае

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

Ответ 13

На мой взгляд, самый чистый способ - полностью удалить свойство из элемента CSSStyleDeclaration, вместо того чтобы просто переписать его каким-то образом значения null/zero/default:

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