Страница 1 из 1

делегирование ?

СообщениеДобавлено: 06 янв 2013, 04:09
balashovka
всем привет
вопрос по делегированию. http://uc.vitragestyle.ru/shbln.php в правой колонке подгружаю календарь. корректно обрабатывается только первая ссылка (пролистать до ноября 2012). как обратиться к конкретной ссылке?
Код: Выделить всё
$('#calendar').on('mouseenter', 'a[rel=popover]', function(){
           
                var a_id = $(this).attr("id");//получаем id ссылки
                alert (a_id);//выводит правильный id
               
                $.ajax({
                    type: "POST",
                    url: "data_game.php",
                    data: "date=" + a_id,
                    success: function(html){
                        $("a[rel=popover]").popover({
                            content: html //выдаёт на всех ссылках только значение с первой - от 8-го ноября
                        });
                    }
                });
        });

:x :x :x

Re: делегирование ?

СообщениеДобавлено: 06 янв 2013, 13:01
Mullih
а можно чуть подробнее что и как должно работать и когда, а то из вашей ссылки вместе с вашим описанием я не только не понял в чем проблема так и вообще что там такое

Re: делегирование ?

СообщениеДобавлено: 06 янв 2013, 17:54
balashovka
Идея такова: на страницу помещается календарь. Кнопки вправо-влево отвечают за пролистывание месяцев - аяксом шлем запрос PHP скрипту, который выбирает из базы события календаря и выводит их в виде ссылок. При наведении указателя мыши на ссылку bootstrap должен показать данные о событии календаря через собственный метод popover().
Проблема: в связи с тем, что ссылки подгружаются аяксом, события, которые висят на них (mouseenter()) не обрабатываются, т.к. DOM о них ничего не знает. Поэтому эти самые события делегируем родителю <div id='calendar'>. До этого момента все работает замечательно. Даже можно через .attr() вытащить id каждой ссылки. Дальше - ошибка: popover() корректно срабатывает только на первой ссылке (первой не по порядку, а первой, которую наводим). Дальше выводятся данные первой сработавшей ссылки, а не той, которая активируется...
Сейчас в базе записи только за ноябрь 2012, чтобы увидеть пример нужно после загрузки страницы пролистать назад

Re: делегирование ?

СообщениеДобавлено: 06 янв 2013, 18:14
Mullih
balashovka писал(а):Проблема: в связи с тем, что ссылки подгружаются аяксом, события, которые висят на них (mouseenter()) не обрабатываются, т.к. DOM о них ничего не знает.


собственно тут есть момент вы можете доподписывать то что пришло с аяксом, либо просто подписаться используя Выполнение актуальной привязки событий ('Pro jQuery' на smarly.net)

второй момент зачем вы передаете on('mouseenter', 'a[rel=popover]', function() если вы данные не используете?

ну и в третьих вы просите отобразить popover для либо всех a[rel=popover] либо для первой попавшего, но тут вопрос выбора стоит в коде бутстрапа

замените на

Код: Выделить всё
$("#" + a_id).popover({
   content: html
});

Re: делегирование ?

СообщениеДобавлено: 06 янв 2013, 20:04
balashovka
Mullih, спасибо за совет, навешенный popover на ссылку с id работает НО со второго раза (при повторном наведении курсора)....