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.