Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #1 (permalink)  
Старый 03.03.2022, 23:56
Аспирант
Отправить личное сообщение для Dolf Посмотреть профиль Найти все сообщения от Dolf
 
Регистрация: 04.04.2021
Сообщений: 31

Отображение балунов в цикле на плане домов
Добрый день. Прошу помощи. Имеется цикл в который передаются объекты неких новостроек (дома) которые отображаются на плане.
for (var house_pos in paths_plan) {
        var obj = r1.path(paths_plan[house_pos].path);
        let attr = attributes;
        arr[obj.id] = house_pos;
        var hover_status = paths_plan[arr[obj.id]].status;
        var house = paths_plan[arr[obj.id]].house;

        switch (hover_status) {
            case 1:
                attr.fill = house_status_1
/*тут идет балун*/           $(".plan_baloon").removeClass("sold").removeClass("booked").addClass("free");
                $(".plan_baloon").attr("id", "house_" + house);
                $(".plan_baloon").text("№" + house);
                
                break
            case 2:
                attr.fill = false
                break
            case 3:
                attr.fill = false
                break
        }


Прошу помочь сделать отображение балунов над всеми домами. То есть те дома у которых hover_status === 1 должны иметь сверху балун. У меня всегда отображается только один. Я так понимаю он последний элемент в массиве.

Если же сделаю подобное но с hover то есть показать балун при наведении мышки на дом, тут все нормально. Но мне нужно что бы балуны были статично всегда над теми домами что имеют hover_status === 1.

Вот так с hover:
switch (hover_status) {
            case 1:
                attr.fill = house_status_1

                obj.hover(function () {
                    var house = paths_plan[arr[this.id]].house;
                    var hover_status = paths_plan[arr[this.id]].status;
                    if (hover_status == 1) {
                        this.animate({
                            fill: house_status_1
                        }, 10);
                        $(".plan_baloon").removeClass("sold").removeClass("booked").addClass("free");
                        $(".plan_baloon").attr("id", "house_" + house);
                        $(".plan_baloon").text("№" + house);
                        console.log("house_" + house);
                    } else if (hover_status == 2) {
                        this.animate({
                            fill: house_status_2
                        }, 10);
                        $(".plan_baloon").removeClass("free").removeClass("booked").addClass("sold");
                        $(".plan_baloon").attr("id", "house_" + house);
                        $(".plan_baloon").text("№" + house);
                        console.log("house_" + house);
                    } else if (hover_status == 3) {
                        this.animate({
                            fill: house_status_3
                        }, 10);
                        $(".plan_baloon").removeClass("sold").removeClass("free").addClass("booked");
                        $(".plan_baloon").attr("id", "house_" + house);
                        $(".plan_baloon").text("№" + house);
                        console.log("house_" + house);
                    }
                })

                break
            case 2:
                attr.fill = false
                break
            case 3:
                attr.fill = false
                break
        }
Ответить с цитированием
Ответ



Опции темы Искать в теме
Искать в теме:

Расширенный поиск