Slyweb
На разработку сайта! Скидки 50%!

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

Вы можете задавать любые вопросы по jQuery.

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

Сообщение balashovka » 06 янв 2013, 04:09

всем привет
вопрос по делегированию. 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
balashovka
 
Сообщения: 7
Зарегистрирован: 08 июн 2012, 13:05

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

Сообщение Mullih » 06 янв 2013, 13:01

а можно чуть подробнее что и как должно работать и когда, а то из вашей ссылки вместе с вашим описанием я не только не понял в чем проблема так и вообще что там такое
Mullih
 
Сообщения: 2
Зарегистрирован: 05 авг 2012, 21:09

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

Сообщение balashovka » 06 янв 2013, 17:54

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

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

Сообщение Mullih » 06 янв 2013, 18:14

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


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

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

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

замените на

Код: Выделить всё
$("#" + a_id).popover({
   content: html
});
Mullih
 
Сообщения: 2
Зарегистрирован: 05 авг 2012, 21:09

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

Сообщение balashovka » 06 янв 2013, 20:04

Mullih, спасибо за совет, навешенный popover на ссылку с id работает НО со второго раза (при повторном наведении курсора)....
balashovka
 
Сообщения: 7
Зарегистрирован: 08 июн 2012, 13:05


Вернуться в Вопросы по jQuery

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 1

cron