Я хочу записать в глобальную переменную с помощью селектора данных. Это вообще возможно? (Пожалуйста, будьте осторожны, мой опыт довольно поверхностный :)
var one = 0;
var two = 0;
var three = 0;
$("a[data-typ]").click(function() {
if ($(this).hasClass('active')) {
$(this).removeClass('active');
$(this).data("typ").toString--;
} else {
$(this).addClass('active');
$(this).data("typ").toString++;
}
});<script src = "https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<a data-typ='one'>One</a>
<a data-typ='two'>Two</a>
<a data-typ='three'>Three</a>
Вы имели в виду это?
var one = 0;
var two = 0;
var three = 0;
$("a[data-typ]").click(function() {
const typ = $(this).data("typ")
if ($(this).is('.active')) {
window[typ]--
} else {
window[typ]++
}
console.info(one,two,three)
$(this).toggleClass("active");
});<script src = "https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<a data-typ='one'>One</a>
<a data-typ='two'>Two</a>
<a data-typ='three'>Three</a>Если у вас есть более одного типа данных в одном атрибуте, вам необходимо разделить:
var one = 0;
var two = 0;
var three = 0;
$("a[data-typ]").click(function() {
const types = $(this).data("typ").split(" "); // split on space.
const active = $(this).is('.active');
types.forEach(typ => {
if (active) {
window[typ]--
} else {
window[typ]++
}
})
console.info(one, two, three)
$(this).toggleClass("active");
});<script src = "https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<a data-typ='one three'>One and three</a>
<a data-typ='two'>Two</a>В принципе да. Затем вам нужно разделить тип и цикл
Хорошо. У меня есть только небольшое представление о том, что вы имеете в виду (на самом деле нет > новичок ;) Если это не проблема для вас, не могли бы вы показать это?
Итак, начните с описания варианта использования. Какова цель этого?
Я обновил свой ответ, чтобы обработать более одного типа в атрибуте
Вау и еще раз спасибо. Я пытаюсь собрать ответы из теста. В итоге у меня будет 8 категорий, чтобы получить баллы. Иногда они получают баллы более чем в одной категории за один вопрос. В конце я хочу показать пользователю, в какой категории он наиболее талантлив и т. д. :) Вы бы решили это по-другому?
Да. У меня был бы объект и, вероятно, я использовал бы более одного атрибута данных, но вам нужно задать новый вопрос, добавить больше html и больше объяснить, какова цель.
Хорошо. Приятно осознавать, что это правильный путь. Я обновлю это, как только буду дальше по линии. еще раз спасибо за поддержку.
Можно ли заменить тип данных простым классом, заполненным текстом? Что-то вроде: const types = $(this).find("typ").text().split(" "); // разбить на пробел.
Конечно. Почему бы вам не попробовать? Дайте пример html
ух ты. Спасибо! Можно ли добавить две переменные в один клик. Типа <a data-typ='one three'>Один плюс три</a>?