[javascript] 값없이 속성 설정

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

<body data-body>

나는 시도했다 :

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

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



답변

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

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

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

<body data-body>

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

attr (attributeName, value)


답변

아마도 시도해보십시오 :

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


답변

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

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

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


답변

jQuery없이 할 수 있습니다!

예:

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

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

에서 MDN Element.setAttribute ()


답변

이것이 실제로 유익한 지 또는 왜이 스타일을 선호하는지 모르겠지만 (바닐라 js에서) 내가하는 일은 다음과 같습니다.

document.querySelector('#selector').toggleAttribute('data-something');

이렇게하면 값없이 모든 소문자로 속성을 추가하거나 요소에 이미 존재하는 경우 제거합니다.

https://developer.mozilla.org/en-US/docs/Web/API/Element/toggleAttribute


답변