У меня есть эта разметка:Как поместить атрибут data в нижний регистр?
<div data-answer=" True" class="question-container"></div>
С этим ЯШАМИ:
Drupal.behaviors.articleQuiz = (function(){
var _attach = function(context){
$('.question-container', context)
.once()
.each(function(i, section){
new ArticleQuiz($(section));
});
};
return {
attach: _attach
};
})();
function ArticleQuiz($el){
this.$el = $el;
this.$el.data('answer'); // the value of this needs to be lower case
this.quizLogic();
return this;
}
ArticleQuiz.prototype.quizLogic = function(){
var THIS = this;
$('.quiz-cols a', this.$el)
.on('click',function(e) {
e.preventDefault();
var $target = $(e.target);
// exit if choice already made: users can't change their pick
if (THIS.$el.hasClass('answered')) return;
$target.addClass('selected');
THIS
.$el
//add correct or incorrect class depending on the selected answer and the correct answer
.addClass(($target.data('value') == THIS.answer) ? 'correct':'incorrect')
//add the answered class so in the future we know that this question was already answered
.addClass('answered');
});
return THIS;
};
самым странным, что в console.log
возвращает атрибут данных ответа в нижнем регистре, но в HTML он все еще выглядит как это:
Что я могу сделать?
ПРИМЕЧАНИЕ: Это значение ответа данных динамически заполняется PHP. так что реальная разметка выглядит следующим образом
<div data-answer="<?php print render($content['field_paragraph_answer']); ?>" class="question-container"></div
Вы должны изменить атрибут, с помощью Attr() ... – sinisake
Это не совсем ясно мне, что вы хотите * * сделать. Причина, по которой в DOM не изменилась, заключается в том, что вы никогда не меняете ее в DOM. Отдельно, '$ ('data-answer')' будет возвращать пустой объект jQuery, потому что он ищет элементы с этим ** именем тега **, например. ' ... data-answer>'. Кроме того, вы никогда не вызываете 'ArticleQuiz' через' new' (или вообще, вообще), но вы, похоже, настраиваете свойства на 'this'. –
Это абсолютно нормально, html не изменяется кодом yiur. Он сугубо получает атрибут и записывает его в нижнем регистре. Если вы хотите изменить сам attrebute, вы можете использовать функцию JQuery, называемую .attr(), или вы можете использовать функцию JS vanilla, называемую setAttribute(). Tho Я не уверен, почему вы заботитесь о html? –