Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #1 (permalink)  
Старый 17.10.2014, 14:03
Интересующийся
Отправить личное сообщение для makarow.dmitry Посмотреть профиль Найти все сообщения от makarow.dmitry
 
Регистрация: 11.01.2014
Сообщений: 15

Отображения элементов относительно друг
Всем привет!
Не могу решить вопрос отображения элементов относительно друг друга.
Буду благодарен если подскажите.

1. Нужно чтобы при появлении одного элемента - все остальные скрывались. Делал так, но не выходит...
$(this).parents("#photo-block .brand-panel #hide").hide();


2. Перестала работать привязка элемента к другом, когда динамически генерирую контент. Нужно чтобы работало.
Статически работает вот так - http://teleport.ink/index_a.html

Вот функция.
function position()  {

                panel_info.position({
                    of: $(this),
                    my: "center center",
                    at: "center bottom+6",
                    collision: "flipfit",
                    within: image_mark
                });
}


Вот весь код JS
$(document).ready(function(){

	$(".mark-brand").click(function(){
            var panel_info = $(this).next('.brand-panel'); //Панель относящаяся к данной метке
            var switch_status = $(this).next('.brand-panel').attr("id"); //Берем значение переключателя
            var image_mark = $(this).siblings("#image");


            //Функция, которая приклеивает панель к метке.
            function position() {

                panel_info.position({
                    of: $(this),
                    my: "center center",
                    at: "center bottom+6",
                    collision: "flipfit",
                    within: image_mark
                });
            }

            //Взависимости от значения id либо скрываем, либо показываем панель
            if ( switch_status == "hide" ) {

                position();
                $(this).next('.brand-panel').attr("id","show");
                panel_info.show();
                $(this).parents("#photo-block .brand-panel #hide").hide(); //Здесь должны скрываться все панели с id hide 
                

            }
            else if ( switch_status == "show") 
            {
                panel_info.hide();
                $(this).next('.brand-panel').attr("id","hide");
            }



        });


});


А вот html
<div class="photo-block"> 



                            {% for tag in photo.get_tags %}

                            {% if tag.z_position == 1 %}                                             
                                <div class="mark-brand" style="top:{{ tag.y_position }}; left:{{ tag.x_position }};" id="{{ tag.id }}">
                                    <svg class="star-mark star-green-active" viewBox="0 0 105 105">
                                        <use xlink:href="#star-mark"></use>
                                    </svg>                          
                                </div>
                                <div class="brand-panel active" id="show">
                                    <a href="{{ tag.url }}">
                                        <p>{{ tag.brand_name }}</p>
                                        <div class="button-mark">
                                            <svg class="arrow-right-icon arrow-right-icon-green" viewBox="0 0 15.15 22">
                                            <use id="mark-close-use" xlink:href="#arrow-right-icon"></use>
                                            </svg>
                                        </div>
                                    </a>               
                                </div> 

                            {% else %}

                            <div class="mark-brand" style="top:{{ tag.y_position }}; left:{{ tag.x_position }};" id="{{ tag.id }}">
                                <svg class="star-mark" viewBox="0 0 105 105">
                                    <use xlink:href="#star-mark"></use>
                                </svg>                          
                            </div>
                            <div class="brand-panel position" id="hide">
                                <a href="{{ tag.url }}">
                                    <p>{{ tag.brand_name }}</p>
                                    <div class="button-mark">
                                        <svg class="arrow-right-icon arrow-right-icon-green" viewBox="0 0 15.15 22">
                                        <use id="mark-close-use" xlink:href="#arrow-right-icon"></use>
                                        </svg>
                                    </div>
                                </a>               
                            </div> 

                            {% endif %}
                                
                            {% endfor%}        
                        
                        <img src="/uploads/{{ photo.image }}" id="image"/>
                        <a href="/add/{{ item.id }}" class="button-add-edit" id="button-add-edit"></a> 
                           
                    </div>


Спасибо.
Ответить с цитированием
  #2 (permalink)  
Старый 17.10.2014, 14:06
Аватар для ksa
ksa ksa вне форума
CacheVar
Отправить личное сообщение для ksa Посмотреть профиль Найти все сообщения от ksa
 
Регистрация: 19.08.2010
Сообщений: 14,228

Сообщение от makarow.dmitry
А вот html
Это не ХТМЛ...
Ответить с цитированием
  #3 (permalink)  
Старый 17.10.2014, 14:07
Аватар для ksa
ksa ksa вне форума
CacheVar
Отправить личное сообщение для ksa Посмотреть профиль Найти все сообщения от ksa
 
Регистрация: 19.08.2010
Сообщений: 14,228

Сообщение от makarow.dmitry
Перестала работать привязка элемента к другом, когда динамически генерирую контент.
Возможно когда "привязываешь" тех элементов еще нет на странице...
Ответить с цитированием
  #4 (permalink)  
Старый 17.10.2014, 14:17
Интересующийся
Отправить личное сообщение для makarow.dmitry Посмотреть профиль Найти все сообщения от makarow.dmitry
 
Регистрация: 11.01.2014
Сообщений: 15

Сообщение от ksa Посмотреть сообщение
Возможно когда "привязываешь" тех элементов еще нет на странице...
А как же
$(document).ready()

Оно же должно работать только после загрузки.
Все элементы загружаются сразу...
Ответить с цитированием
  #5 (permalink)  
Старый 17.10.2014, 14:21
Аватар для ksa
ksa ksa вне форума
CacheVar
Отправить личное сообщение для ksa Посмотреть профиль Найти все сообщения от ksa
 
Регистрация: 19.08.2010
Сообщений: 14,228

Сообщение от makarow.dmitry
Оно же должно работать только после загрузки.
Понятие "загрузки" у всех разное...

Что касается
Сообщение от makarow.dmitry
$(document).ready()
так оно наступает "по готовности документа"...
Ответить с цитированием
  #6 (permalink)  
Старый 17.10.2014, 14:21
Интересующийся
Отправить личное сообщение для makarow.dmitry Посмотреть профиль Найти все сообщения от makarow.dmitry
 
Регистрация: 11.01.2014
Сообщений: 15

$(this).parents("#photo-block .brand-panel #hide").hide();

Вот это не работает.

И вот это position();
Ответить с цитированием
  #7 (permalink)  
Старый 17.10.2014, 14:22
Аватар для ksa
ksa ksa вне форума
CacheVar
Отправить личное сообщение для ksa Посмотреть профиль Найти все сообщения от ksa
 
Регистрация: 19.08.2010
Сообщений: 14,228

makarow.dmitry, ты в состоянии сделать тестовый пример где проявляется твоя проблема?
Ответить с цитированием
  #8 (permalink)  
Старый 17.10.2014, 14:32
Интересующийся
Отправить личное сообщение для makarow.dmitry Посмотреть профиль Найти все сообщения от makarow.dmitry
 
Регистрация: 11.01.2014
Сообщений: 15

Сообщение от ksa Посмотреть сообщение
makarow.dmitry, ты в состоянии сделать тестовый пример где проявляется твоя проблема?
$(this).parents("#photo-block .brand-panel #hide").hide(); - Вот это не работает. (т.е. не скрывает все элементы, кроме текущего).

position(); - также не делается свою задачу.
Ответить с цитированием
  #9 (permalink)  
Старый 17.10.2014, 14:46
Аватар для ksa
ksa ksa вне форума
CacheVar
Отправить личное сообщение для ksa Посмотреть профиль Найти все сообщения от ksa
 
Регистрация: 19.08.2010
Сообщений: 14,228

makarow.dmitry, начнем с того, что это далеко не тестовый пример...

Но даже это уже показывает некую фигнотень. Поскольку селектор
#photo-block .brand-panel #hide

не может выбрать более одного элемента, потому, как заканчивается на селектор идентификатора - #hide.
Ответить с цитированием
  #10 (permalink)  
Старый 17.10.2014, 17:56
Интересующийся
Отправить личное сообщение для makarow.dmitry Посмотреть профиль Найти все сообщения от makarow.dmitry
 
Регистрация: 11.01.2014
Сообщений: 15

Сообщение от ksa Посмотреть сообщение
makarow.dmitry, начнем с того, что это далеко не тестовый пример...

Но даже это уже показывает некую фигнотень. Поскольку селектор
#photo-block .brand-panel #hide

не может выбрать более одного элемента, потому, как заканчивается на селектор идентификатора - #hide.

C основными моментами разобрался.
Вот только не нашел решение одной проблемы:

Она возникает, когда генерируется контент, например аяксом. Все id и class такие же, как в рабочих элементах (которые сгенерировались при загрузке)
Пробовал load - но не сработало.

Может подскажите что я упускаю из основных моментов.
Спасибо
Ответить с цитированием
Ответ



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

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


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Фиксация границ элементов и zoom всех объектов emppu2007 Элементы интерфейса 2 03.10.2013 06:04
Удалить и вернуть массив из удаленных элементов splice Paulyyy Общие вопросы Javascript 15 29.05.2013 15:36
запретить изменение количество элементов в списке Antistas jQuery 0 05.12.2012 14:05
Сгенерировать 2 последовательности и узнать сколько в них одинаковых элементов Ирина Владимировна Общие вопросы Javascript 10 24.03.2012 18:18
"Переключатель" отображения элементов rkin jQuery 3 14.05.2009 10:06