jQuery로 CSS "top"및 "left"속성 제거


169

지도를 드래그 할 때 요소에 각각의 값이있는 'left'및 'top'속성이 부여되는 드래그 가능한 맵을 작성합니다.

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

클릭하면 div의 인라인 스타일에서 상단 및 왼쪽 속성을 제거하려는 버튼이 있습니다. 이는 jquery로 가능합니까?


9
네 그렇습니다. 최소한 빈 값으로 설정하면 제거됩니다.
— Felix Kling

가능한 중복 : Jquery를 사용하여 CSS 속성을 제거하십시오 . 답변이 도움이 될 수 있습니다.
— Drew Gaynor

참고 ' '빈 값 전용으로 계산하지 않습니다''
— 피터 버그

3
한 번에 하나의 CSS 속성 만 제거하려면 : var cssObject =$('selector').prop('style'); cssObject.removeProperty('top'); cssObject.removeProperty('left');
— ilgaar

레코드의 경우 만 비어 있음으로 설정해도 항상 작동하지는 않습니다. "스타일 속성의 값을 빈 문자열로 설정합니다. 그러나 스타일 시트에서 CSS 규칙이 적용된 스타일은 제거하지 않습니다. style> element. " - 참조 stackoverflow.com/questions/27791484/...
— Mörre

답변:


139

CSS top및 의 기본값 left은입니다 auto. 따라서이를 설정하는 것은 수행하려는 작업에 따라 동일 할 수 있습니다.

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

style속성 을 완전히 제거하는 옵션도 있습니다 .

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

그러나 다른 jQuery UI 구성 요소를 사용하는 경우 제거하지 않으려는 인라인 스타일이 필요할 수 있으므로주의해서 진행하십시오.


61
일반적으로 스타일 속성에 추가 된 이러한 덮어 쓰기는 기본 CSS 값에서 값을 변경하기위한 것입니다. 자동으로 설정해도 기본값으로 재설정되지 않습니다. 의미 auto는 실제로 동일하지 않으며 전혀 가치가 없습니다. 정답은 $ ( 'map'). css ( 'top', '')입니다.
— dsomnus

15
이 답변은 잘못되었습니다. 속성을 제거 하지 않고 다른 것으로 대체하십시오. 또한 전체 스타일 태그를 제거하는 것은별로 의미가 없습니다. 일부 속성을 유지하고 다른 속성을 제거하고 싶을 수도 있습니다. wtrevino의 답변이 맞습니다.
— Alex

필수 옵션이 아니기 때문에 훌륭합니다! :) username 같은 필드
— Dean Meehan

5
기록을 위해 @wtrevino의 답변이 여기에 허용되어야합니다. 이 특정 솔루션은 일부 상황에서 저에게 효과적이지만 가능한 경우이 답변을 제거 할 것입니다. 불행히도, 그것이 받아 들여 졌기 때문에, 나를 허락하지 않을 것입니다.
— Rob Hruska

이것은 정답이 아닙니다 ... @wtrevino 답변이 가장 정확합니다. 이 답변은 요소에서 모든 정적 스타일을 제거하려는 경우에만 작동합니다 ... 대부분의 경우이 작업은 원하지 않습니다.
— Lars

427

상단 및 왼쪽 속성을 구체적으로 제거하고 다른 속성을 남기려면 다음과 같이하십시오.

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

또는 더 짧은 것 :

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

64
이것은 선택된 것보다 더 나은 대답입니다.
— phirschybar

네. 이것이 정답입니다. ".css ( 'top', '')"처럼 보이기 때문에 처음에는 의미가 없었습니다. 빈 '맨 위'규칙을 만들지 만 아니요, 완전히 제거합니다.
— Starkers

2
이것이 가장 좋은 대답입니다. 그러나 나는 다른 것을 발견했다고 생각합니다. 나는 몇 가지 다른 것을 시도했다. .css('left', undefined);아무것도 바꾸지 않았습니다. null을 전달해도 아무것도 수행되지 않았습니다. 그러나 .css('left', false);그 속성을 제거합니다.
— Viktor

다른 사람들이 제안했듯이 이것은 정답으로 간주되어야합니다.

1
@Viktor 설명서에는 빈 문자열을 사용하도록 명시 적으로 명시되어 있습니다. 미래에 사라질 수있는 문서화되지 않은 유형의 강제로 인해 거짓이 발생하는지 궁금합니다. api.jquery.com/css
— Jeremy Wadhams

37

다음 style을 수행 하여 속성 의 모든 내용을 제거 할 수 있습니다 .

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

다음 style을 수행하여 특정을 제거 할 수 있습니다 .

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

30

CSS 속성을 빈 문자열로 설정하면됩니다 (예 : 다음 코드 사용).

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

CSS의 jQuery 설명서를 참조하십시오 .


3
이것이 왜 대답이 아닌지 잘 모르겠습니다. 실제로 허용되는 답변은 질문의 제목 인 객체에서 CSS 속성을 실제로 제거하지 않기 때문에 해키입니다.
— Paul Go

6
  1. 여기로 이동 : jQuery API
  2. '제거'에 대한 Ctrl + F
  3. 읽다:

스타일 속성 값을 빈 문자열로 설정하면 (예 : $ ( "#mydiv") .css ( "color", "")) HTML 스타일에 관계없이 해당 속성이 요소에 이미 적용된 경우 해당 속성을 제거합니다. 속성, jQuery의 .css () 메소드 또는 스타일 속성의 직접적인 DOM 조작을 통해.

이 문서는 달성하려는 목표에 대한 현재 권장되는 접근 방식을 제공합니다. 스택 오버플로에서 화염 전쟁을 앞뒤로 읽을 필요가 없기 때문에 시간을 절약 할 수 있습니다. !).


5

당 이 JQuery와 버그 리포트

element.removeAttr ( 'style')
웹킷 기반 브라우저에서 일관되게 작동하지 않습니다. 예를 들어, iOS 6.1에서이 문제를 겪었습니다. 수정은 다음을 사용하는 것입니다.
element.attr ( 'style', '')


2

모든 것을 제거하려면 할 수 있습니다

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

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

}

그런 다음 CSS 소품을 제거하려면 :

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

1

내 생각에 가장 깨끗한 방법은 속성 을 null / zero / default 값으로 덮어 쓰지 않고 요소의 CSSStyleDeclaration 에서 속성을 완전히 제거하는 것입니다.

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

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 ( 'color');


0

쉽게 제거 할 수없는 몇 가지 스타일이 있습니다.

해결 방법은 서로 다른 2 개의 클래스를 만들고 원하는 스타일이 포함 된 클래스를 추가 / 제거하는 것입니다.

쉽게 제거 / 비활성화 할 수있는 스타일 속성에 대한 최상의 솔루션은 아닙니다.


0

CSS 스타일을 제거하려면 스타일에 빈 문자열을 할당하십시오.

이 경우

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

당사 사이트를 사용함과 동시에 당사의 쿠키 정책과 개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.