Javascript-форум (https://javascript.ru/forum/)
-   Общие вопросы Javascript (https://javascript.ru/forum/misc/)
-   -   При клике на опред. юзера всплывает его информация (https://javascript.ru/forum/misc/66545-pri-klike-na-opred-yuzera-vsplyvaet-ego-informaciya.html)

yaparoff 22.12.2016 09:32

При клике на опред. юзера всплывает его информация
 
Выводиться список пользователей с помощью ajax.
Нужно сделать, чтобы при клике на пользователя выводилось окно с доп. информацией этого пользователя.

Это окно уже выведено, но оно спрятано с помощью css. Просто при клике на юзера я буду добавлять ему класс, чтобы оно было видно.

Но как сделать чтобы при клике на опред. юзера открывалась именно его доп. информация?

получается перебираем сначала всех пользователей:
var user = document.querySelectorAll('.user');

это вроде массив должен получиться, и как из него достать юзера на который кликнули?

http://codepen.io/anon/pen/

рони 22.12.2016 10:25

yaparoff, делегирование!
usersList.addEventListener("click", function(event) {
    var target = event.target;
    while (target != usersList) {
        if (target.classList.contains("user")) {
            target.querySelector(".user__info").classList.toggle("visible");
            break
        }
        target = target.parentNode
    }
});


css только для примера
.user__info.visible {
  visibility: visible;
  left: 0;
 }

yaparoff 22.12.2016 20:24

Цитата:

Сообщение от рони
yaparoff, делегирование!

рони, спасибо большое! Вы меня очень выручили!

скажите, а для чего нужен break здесь? вроде бы и без него работает

рони 22.12.2016 20:48

yaparoff,
зачем продолжать цикл если нашли искомое, да будет работать и без него, но дольше на одну миллиардную долю секунды. :)

yaparoff 23.12.2016 06:29

Цитата:

Сообщение от рони
yaparoff, делегирование!

сейчас все круто, но когда всплывает окно и ты кликаешь в любое место экрана - оно исчезает. Так оно и должно быть, но только если ты на само всплывшее окно не кликаешь.

Т.е. когда окно всплыло, как сделать чтобы при клике на него - оно не исчезало?

http://codepen.io/anon/pen/

рони 23.12.2016 09:59

yaparoff,
usersList.addEventListener("click", function(event) {
    var target = event.target,
        close = target.classList.contains("user__close");
    while (target != usersList) {
        if (target.classList.contains("user__content") && !close) break;
        if (target.classList.contains("user")) {
            target.querySelector(".user__info").classList.toggle("visible");
            break
        }
        target = target.parentNode
    }
});


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