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로 설정하여 버튼이 비활성화됩니다.
답변
이것이 실제로 유익한 지 또는 왜이 스타일을 선호하는지 모르겠지만 (바닐라 js에서) 내가하는 일은 다음과 같습니다.
document.querySelector('#selector').toggleAttribute('data-something');
이렇게하면 값없이 모든 소문자로 속성을 추가하거나 요소에 이미 존재하는 경우 제거합니다.
https://developer.mozilla.org/en-US/docs/Web/API/Element/toggleAttribute