Установить атрибут без значения
Как установить атрибут данных без добавления значения в jQuery? Я хочу это:
<body data-body>
Я пробовал:
$('body').attr('data-body'); // this is a getter, not working
$('body').attr('data-body', null); // not adding anything
Все остальное, кажется, добавляет второй аргумент в виде строки. Можно ли просто установить атрибут без значения?
Ответы
Ответ 1
Функция attr()
также является функцией setter. Вы можете просто передать ему пустую строку.
$('body').attr('data-body','');
Пустая строка просто создаст атрибут без значения.
<body data-body>
Ссылка - http://api.jquery.com/attr/#attr-attributeName-value
attr (attributeName, value)
Ответ 2
Возможно, попробуйте:
var body = document.getElementsByTagName('body')[0];
body.setAttribute("data-body","");
Ответ 3
Принятый ответ не позволяет создавать атрибут только для имени (по состоянию на сентябрь 2017 года).
Вы должны использовать JQuery prop() для создания атрибутов только для имени.
$(body).prop('data-body', true)
Ответ 4
По состоянию на 6/15/2017 я не верю, что это правильно.
Я собрал скрипку, которая продемонстрирует, что в настоящее время (используя jQuery Edge, который вытащил [jQuery JavaScript Library v3.2.2-pre 5bdd1ca1ab6469c5ec9ed7ba8b669b4cacc281d9]), не проявляет вышеуказанного поведения.
Вместо этого, если параметр значения не имеет значения, имя атрибута помещается как значение.
(История)
Я попытался добавить атрибут требуемой петли для поля, если соответствующий флажок установлен. Вместо того, чтобы видеть атрибут "required =" "Я видел" required = "required".
Вот ссылка на эту скрипку.
https://jsfiddle.net/Jevolz/25whtL83/
(Обновлено Fiddle: доказательство более пустых возможностей строки: https://jsfiddle.net/Jevolz/25whtL83/7/)
HTML:
<input type="checkbox" id="demoCb" />
<input type="text" id="demoTxt" value="Inspect Me!"/>
JavaScript:
$(function(){
$('#demoCb').on('click', cbChanged);
});
function cbChanged(e){
var elem = $(e.target);
var checked = $(elem).is(':checked');
if(checked){
$('#demoTxt').attr('required', '');
}
else{
$('#demoTxt').attr('required', null);
}
}
Я обновлю этот пост, если найду эти изменения.
* Примечание 7/17/2017:
В некоторых инструментах разработчика браузеров я наблюдаю flaky. Вары, которые я могу правильно вытащить на консоли, не отражаются должным образом в "Inspect Element". Это может объяснить мои наблюдения. Если вы согласитесь, дайте мне знать, и я увижу, как снять этот пост.
Спасибо