Javascript-форум (https://javascript.ru/forum/)
-   Events/DOM/Window (https://javascript.ru/forum/events/)
-   -   javascript tabs (https://javascript.ru/forum/events/51184-javascript-tabs.html)

Smike 27.10.2014 22:31

javascript tabs
 
Всем привет. Сегодня у меня нестандартный вопрос. Я решил реализовать табы на js (впервые). Их реализацию вы можете увидеть по ссылке

http://jsfiddle.net/zenrgu38/

Но лично мне кажется, что реализация хромает. каждый раз браузер обходит элементы в цикле - не очень эффективное решение. Мне интересно ваше мнение. Большое спасибо! =)

Да, и забудем про то, что это не кроссбраузерно(getElementsByClassNam e, addEventListener and classList) ибо исправить это не такая большая проблема. Вопрос именно в реализации.

bes 27.10.2014 23:00

реши через делегирование событий

Цитата:

Сообщение от Smike
Да, и забудем про то, что это не кроссбраузерно(getElementsByClassNam e, addEventListener and classList)

забудь про некроссбраузерность

danik.js 27.10.2014 23:17

para[0].classList.remove("hide");

Вот это явно не в цикле должно быть ) Этого вообще не должно быть. Че за дрочка - добавили класс hide - передумали, убрали класс hide ))

По клику никаких циклов уже не должно быть. Ну не нужно добавлять класс hide элементам, которые уже и так его имеют. Добавляй его только нескрытому элементу.

рони 27.10.2014 23:22

Smike,
http://jsfiddle.net/zenrgu38/1/

Vlasenko Fedor 27.10.2014 23:26

Вот и я с этого начинал велосипедить :)
Мои две реализации табов на jQuery
http://jsfiddle.net/vlasenkofedor/82kSU/
на чистом JS
http://jsfiddle.net/vlasenkofedor/jLprM/
Но совершенству нет предела, так что улучшайте

kostyanet 28.10.2014 04:14

Цитата:

Сообщение от danik.js
По клику никаких циклов уже не должно быть.

Тем не менее у профессоров все на циклах.

Отсюда вопрос. Произвольный доступ можно ведь организовать на двух сущностях - current и previous - или практически нельзя?

danik.js 28.10.2014 06:13

Цитата:

Сообщение от kostyanet
current и previous - или практически нельзя?

Это всего лишь переменные. С каких пор переменные нельзя использовать практически? И причем тут произвольный доступ.

Smike 28.10.2014 11:31

Цитата:

Сообщение от danik.js (Сообщение 337918)
para[0].classList.remove("hide");

Вот это явно не в цикле должно быть ) Этого вообще не должно быть. Че за дрочка - добавили класс hide - передумали, убрали класс hide ))

По клику никаких циклов уже не должно быть. Ну не нужно добавлять класс hide элементам, которые уже и так его имеют. Добавляй его только нескрытому элементу.

Нда, то что этот элемент в цикле - явная глупость =)

Smike 28.10.2014 11:33

Цитата:

Сообщение от рони (Сообщение 337920)

Рони, не понимаю одного в этом примере.

вот ты сохраняешь в переменную old первый параграф и скрываешь его при клике на link.
как тогда скрываются другие параграфы? то есть para[1], para[2] и т.д.

рони 28.10.2014 12:04

Smike,
в переменной old всегда находится элемент открытый в прошлый раз - перед открытием нового элемента -- элемент в old скрывается -- в него записывается новый и новый old открывается - так понятнее?


Часовой пояс GMT +3, время: 12:04.