Https://codesandbox.io/s/pedantic-darwin-f1o6q?file=/index.html
написал первый код, работает все корректно, можете посмотреть и сказать свое мнения, может что то не так написал, или ошибки есть, подскажите, буду благодарен)
JavaScript
Js первый код (портфолио)
Подключать большую библиотеку, чтобы использовать две функции оттуда - такая себе идея. Если уж jQuery подключено, хорошо бы использовать его по полной, чтобы так не бросалось в глаза, что не умеешь делать анимацию на JS )
Когда setAttribute меняет значение дата-атрибута, свойство dataset не меняется. Поэтому если переходить на dataset - нужно переписать его везде.
В перспективе, использование onclick тоже может доставить проблем: Он может быть только один, а иногда хочется из двух разных мест добавить обработчик события на элемент. Для этого существует item.addEventListener("click", function() { ...});
В чем глубокий смысл создания отдельной функции для каждой кнопки? Все они делают одно и то же, можно без этих `return function`, создать только одну функцию, и добавить её ко всем кнопкам.
data-check on / off можно заменить на добавление / удаление класса.
Не понятно, к чему эти хитрые if-else. Фактически, всю функцию можно заменить на такую:
function () {
if( this.dataset.check == "on" ) return;
btn.forEach(e => e.dataset.check = "off");
this.dataset.check = "on";
let filter = ( this.dataset.filter == "all" ) ? "" : `="${ this.dataset.filter }"`;
$("img").hide(500);
$("img[data-filter" + filter + "]").show(500);
}
Заморочился бы записать анимасьон без jQuery) Лень.
Ну или так...
function() {
if( $(this).data('check') == "on" ) return;
let filter = $(this).data('filter') == "all" ? "" : `="${ $(this).data('filter') }"`;
$('img').hide(500);
$('img[data-filter' + filter + ']').show(500);
$('button').data('check', 'off');
$(this).data('check', 'on');
};
Когда setAttribute меняет значение дата-атрибута, свойство dataset не меняется. Поэтому если переходить на dataset - нужно переписать его везде.
В перспективе, использование onclick тоже может доставить проблем: Он может быть только один, а иногда хочется из двух разных мест добавить обработчик события на элемент. Для этого существует item.addEventListener("click", function() { ...});
В чем глубокий смысл создания отдельной функции для каждой кнопки? Все они делают одно и то же, можно без этих `return function`, создать только одну функцию, и добавить её ко всем кнопкам.
data-check on / off можно заменить на добавление / удаление класса.
Не понятно, к чему эти хитрые if-else. Фактически, всю функцию можно заменить на такую:
function () {
if( this.dataset.check == "on" ) return;
btn.forEach(e => e.dataset.check = "off");
this.dataset.check = "on";
let filter = ( this.dataset.filter == "all" ) ? "" : `="${ this.dataset.filter }"`;
$("img").hide(500);
$("img[data-filter" + filter + "]").show(500);
}
Заморочился бы записать анимасьон без jQuery) Лень.
Ну или так...
function() {
if( $(this).data('check') == "on" ) return;
let filter = $(this).data('filter') == "all" ? "" : `="${ $(this).data('filter') }"`;
$('img').hide(500);
$('img[data-filter' + filter + ']').show(500);
$('button').data('check', 'off');
$(this).data('check', 'on');
};
Александр Прейзендорф
if( this.dataset.check == "on" ) return; зачем здесь return? что он дает?
Вишня это ягода, а не фрукт
Александр Прейзендорф
да, знаю, потом заметил уже как сделал), перепутал бывает)
Aram Xachatryan
Плод вишни - костянка, а не ягода. Как ботаник говорю
Вместо .getAttribute("data-filter") можно (и нужно) писать проще:
.dataset.filter
То же самое про .setAttribute("data-***", ***)
.dataset.filter
То же самое про .setAttribute("data-***", ***)
Александр Прейзендорф
Я не очень понял, как написать, к get и set,можно подробно плс?
пOртфолио
Похожие вопросы
- Как в HTML (JS) написать код для подгрузки контента?
- Почему js код отрабатывает 1 раз?
- Что делает этот код на JS?
- Помогите, пожалуйста, написать js код для обновления ссылки
- Не могу понять почему код на js не работает.
- Ребят помогите с кодом пожалуйста (JS, Googl Apps Sсript)
- Помогите определиться с выбором нового языка (JS(TS) vs Java)
- Проверьте 2 кода ((( пожалуйста и ткните носом на ошибку. В общем 1 код работает частично, а второй вообще не работает. JS
- Вопрос только к тем, кто знает js: Кому не лень, объясните мне нубу значение каждого элемента небольшого кода (10 строк).
- Помогите разобрать след код на JS