Клуб API Карт

При клике на метку изменить стиль у внешнего элемента добавленного через append

zherelevich
8 февраля 2016, 22:19

Здравствуйте! Помогите пожалуйста.

Есть цикл который:
1 добавляет на стр. через append блок с информацией о магазине
2 создет метки 
3  добавляю для метки event click который должен созданый выше блок раскрывать, но ничего не происходит. Как сделать чтобы созданный блок был виден в event click может есть какой-то аналог типа live click jquery?

Фрагмент кода

for (var i = 0; i < data.length; i++) {
                        html = '';
                        html += '<div  id="store'+i+'" data-id="' + i + '" class="item store-link">';
                        html +=  '<div class="title clearFix"><span>'+data[i].name+'</span>';
                        if (data[i].wait)
                        html+='<span class="willBeAvailable">Через '+data[i].moving+' дня</span>';
                        else
                            html+='<span class="available">В наличии</span>';
                        html += '</div>';
                        html += '<div class="address">' + data[i].address;
                        html += '<span>' + data[i].address2+'</span>';
                        html += '</div>';
                        html += '<div class="holder"><div class="arrow"><div></div></div>';
                        html += '<a class="telHome" href="tel:' + data[i].tel1 + '">' + data[i].tel1 + '</a>';
                        html += '<a class="telHome" href="te2:' + data[i].tel2 + '">' + data[i].tel2 + '</a>';
                        html += '<div class="times">';
                        $.each(data[i].worktime, function(index, value){
                            html += '<div class="time clearFix">'+value+'</div>';
                        });

                        html += '</div>';
                        html += '<div class="hr"></div>';
                        html += '<div class="howToGet">';
                        html += '<input type="hidden" name="boundedBy" value="'+ data[i].boundedBy +'" >';
                        html += '</div>';
                        html += '</div>';
                        html += '</div>';
                        $('.contactsHolder').append(html);

                        if (data[i].wait)
                            place = '/catalog/view/theme/default/image/map/place2.png';
                        else
                            place = '/catalog/view/theme/default/image/map/place.png';
                        myGeoObjects[i] = new ymaps.Placemark([data[i].m_lat, data[i].m_lan], {
                            name: data[i].name,
                            address: data[i].address,
                            worktime: '',
                            description: data[i].description,
                            clusterCaption:data[i].name,
                            balloonContentBody:data[i].address


                        }, {
                            balloonContentLayout: BalloonContentLayout,
                            preset: 'islands#icon',
                            iconColor: '#0095b6',
                            iconLayout: 'default#image',
                            iconImageHref: place,
                            iconImageSize: [81, 68],
                            iconImageOffset: [-3, -42]
                        });
                        myGeoObjects[i].events.add('click', function () {
                            //этот контейнер только что создан и не виден событию
                            $('#store'+i).show();
                        });
                    }

1 комментарий
Подписаться на комментарии к посту
Так лучше не делать
Используйте макеты, храня HTML разметку в шаблоне макета.
https://tech.yandex.ru/maps/doc/jsapi/2.1/ref/reference/templateLayoutFactory-docpage/

Обработчик события навешивается в методе build
пример
https://github.com/dimik/ymaps/blob/gh-pages/examples/2.1/location-tool/src/layout/demo.js