값없이 속성 설정


194

jQuery에 값을 추가하지 않고 데이터 속성을 어떻게 설정합니까? 나는 이것을 원한다 :

<body data-body>

나는 시도했다 :

$('body').attr('data-body'); // this is a getter, not working
$('body').attr('data-body', null); // not adding anything

다른 모든 것은 두 번째 인수를 문자열로 추가하는 것 같습니다. 값없이 속성을 설정할 수 있습니까?


3
data-body대가 필요 data-body=""합니까?
폭발 약

최소한 XHTML을 사용하려면 속성 최소화 가 허용 되지 않으므로 그렇게하지 않아야합니다 .
Matthias

9
XHTML을 사용하지 않고 HTML5를 사용합니다
David Hellsing

2
생성 된 HTML을 문자열로 저장하고 나중에 역방향 조회를 수행해야하기 때문에 @ user1689607.
David Hellsing

4
@ExplosionPills 한 가지 예는 requiredHTML5 양식 유효성 검사 의 속성입니다. 다른 유효한 사용 사례가 많이 있다고 확신합니다.
Zero3

답변:


251

attr()기능은 세터 기능이기도합니다. 빈 문자열을 전달할 수 있습니다.

$('body').attr('data-body','');

빈 문자열은 단순히 값이없는 속성을 만듭니다.

<body data-body>

참조-http: //api.jquery.com/attr/#attr-attributeName-value

attr (attributeName, value)


24
+1이지만 OP는 세터라는 것을 알고 있습니다. 빈 문자열을 전달하는 null것은 효과가 있지만 다소 놀라운 것은 아닙니다.
Jon

2
Javasctipt에는 이상한 동작이 있습니다. 이러한 이상이 어디에서 발생하는지 알면 놀람의 요소가 제거 될 것입니다. : P
Lix

25
참고 : jQuery 1.7.2에서는 작동하지 않지만 (최신 버전은 아닙니다) data-body = "data-body"설정 $(el).prop('data-body', true)$(el).attr('data-body', '')끝났을 때 사용 했습니다 .
패트릭 오 도허티

6
@ PatrickO'Doherty $(el).prop('data-body', true)는 나를 위해 작동하지 않습니다. attr()작동하지만 추가하려는 속성 값으로 빈 문자열을 추가합니다.
Webdevotion

1
@Andrew removeAttr / prop 함수를 찾고 있다고 생각합니다 . 제거하려는 속성에 따라 다릅니다.
Lix

47

아마도 시도해보십시오 :

var body = document.getElementsByTagName('body')[0];
body.setAttribute("data-body","");

2
이 솔루션 만이 저에게 var btn = $(this).get(0); btn.setAttribute("disabled","");
효과적

1
여기에있는 다른 모든 솔루션과 의견에서 제안한 것처럼 .attr 및 .prop로 엉망이 된 후에 마침내 네이티브 JS로 되돌아 가거나 (또는 ​​적어도 "반쯤"뒤로) 네이티브 트릭으로 제안 된 트릭을 발견했습니다. 위의 의견 ... 건배!
TheCuBeMan

22

허용 대답은하지 않습니다 (9 월 2017로) 더 이상 이름 전용 속성을 만들 수 있습니다.

이름 전용 속성을 작성 하려면 JQuery prop () 메소드를 사용해야 합니다.

$(body).prop('data-body', true)

실제로 "value"대신 "select = 'true'"를 선택 옵션에 추가 한 것으로 보입니다. 어.
RonLugge

나는 수용 된 답변 에이 솔루션이 어떻게 포함되어 있지 않은지 궁금했습니다! jquery를 사용하는 가장 깨끗한 방법입니다.
denns

불행히도 Chrome의 선택 드롭 다운 옵션에서 작동하지 않음
MC9000

7

jQuery없이 할 수 있습니다!

예:

document.querySelector('button').setAttribute('disabled', '');
<button>My disabled button!</button>

사용 안함과 같은 부울 속성 값을 설정하려면 임의의 값을 지정할 수 있습니다. 빈 문자열 또는 속성 이름이 권장되는 값입니다. 중요한 것은 속성이 실제 값에 관계없이 존재한다면 그 값은 참으로 간주된다는 것입니다. 속성이 없으면 값이 false임을 의미합니다. disabled 속성 값을 빈 문자열 ( "")로 설정하면 disabled를 true로 설정하여 버튼이 비활성화됩니다.

에서 MDN Element.setAttribute ()


1
jQuery는 이와 관련하여 너무 잘못되었습니다. jquery 또는 브라우저가 변경 될 때마다 자신을 미치게하지 않도록 자바 스크립트에서하는 것이 가장 좋습니다. 이것은 모든 버그가있는 클라이언트 프레임 워크에 적용됩니다.
MC9000

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