Форум программистов, компьютерный форум, киберфорум
jQuery
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.60/5: Рейтинг темы: голосов - 5, средняя оценка - 4.60
0 / 0 / 0
Регистрация: 24.05.2014
Сообщений: 6
1

Странное поведение при делегировании

24.05.2014, 04:17. Показов 868. Ответов 6
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Доброй ночи, Господа.

Пишу некую доп. функциональность к календарю, но дело, собственно, не в этом.
Прописываю 2 события. Т.к. html-часть календаря выводится на jQ, использую делегирование:
Javascript
1
2
3
4
5
6
7
8
        
jQuery("#calendar").on('mouseenter','.fc-event',function() {
    console.log('111');
});
 
jQuery("#calendar").on('mouseleave','.fc-event',function() {
    console.log('222');
});
Проблема в том, что второе событие срабатывает, а первое нет. При чем, если убрать делегирование и поставить, допустим, setTimeout, то все будет работать. Но это не выход.
В другом подобном скрипте все в порядке. Честно говоря я в растерянности, т.к. подобных проблем никогда не было.
Может кто сможет подсказать, куда хоть копать, с чем подобное может быть связано?
Спасибо.
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
24.05.2014, 04:17
Ответы с готовыми решениями:

Странное поведение firefox при AJAX запросе
Есть код(с маленькой примесью PHP, на понимание не влияет): window.onload = function(){ var...

Странное поведение
Здравствуйте, столкнулся с проблемой и никто не может сказать в чем может быть загвоздка, сам...

Странное поведение click
Добрый день! Есть динамическая таблица допустим я создаю строки номер строки значение 1 11111...

Странное поведение jQuery
В общем-то есть на странице пару простых чекбоксов c одним классом - пытаюсь достать их значение по...

6
3325 / 2845 / 1423
Регистрация: 15.01.2014
Сообщений: 6,170
24.05.2014, 04:21 2
mcreature, попробуйте следующий синтаксис:
Javascript
1
2
3
4
5
6
7
8
jQuery("#calendar").on({
    mouseenter: function() {
        console.log('111');
    },
    mouseleave: function() {
        console.log('222');
    }
}, '.fc-event');
0
0 / 0 / 0
Регистрация: 24.05.2014
Сообщений: 6
24.05.2014, 04:35  [ТС] 3
Цитата Сообщение от Lazy_Den Посмотреть сообщение
mcreature, попробуйте следующий синтаксис:
Javascript
1
2
3
4
5
6
7
8
jQuery("#calendar").on({
    mouseenter: function() {
        console.log('111');
    },
    mouseleave: function() {
        console.log('222');
    }
}, '.fc-event');
Спасибо за ответ, но не помогло, результат тот же.
0
3325 / 2845 / 1423
Регистрация: 15.01.2014
Сообщений: 6,170
24.05.2014, 04:37 4
Цитата Сообщение от mcreature Посмотреть сообщение
не помогло
Предполагал....
Проверьте, чтоб ниже по коду не было перекрывающего события. Посмотрите простой пример, что может быть. Ясное дело, что кода один в один у вас не будет, но метод hover или еще один mouseenter, косвенно или явно влияющие на на элемент, могут сыграть такую злую шутку.
Javascript
1
2
3
4
5
6
7
8
9
10
11
12
13
jQuery("#calendar").on({
    mouseenter: function() {
        console.log('111');
    },
    mouseleave: function() {
        console.log('222');
    }
}, '.fc-event');
 
$('.fc-event').hover(
    function(){ return false; },
    function(){}
);
0
0 / 0 / 0
Регистрация: 24.05.2014
Сообщений: 6
24.05.2014, 05:01  [ТС] 5
Lazy_Den, в моем коде ничего не перекрывает (других событий нет), но компонент календаря не маленький, там все может быть. Спасибо, буду копать в эту сторону, но уже завтра)

А если ничего не найду, что посоветуете, поменять элемент?
0
3325 / 2845 / 1423
Регистрация: 15.01.2014
Сообщений: 6,170
24.05.2014, 05:12 6
Цитата Сообщение от mcreature Посмотреть сообщение
поменять элемент?
Вы думаете, что смена элемента что-то даст? Нет дыма без огня и проблема возникла не на ровном месте. Ошибка или недочет где-то у вас есть и найти его вполне реально.
0
0 / 0 / 0
Регистрация: 24.05.2014
Сообщений: 6
25.05.2014, 02:28  [ТС] 7
Lazy_Den, Спасибо за помощь, Вы оказались правы. Нашел я события в компоненте календаря, перекрывающие мои. Функцию закомментил, но толку мало. Срабатывает 1 раз, а дальше получаю Uncaught TypeError: undefined is not a function. Код там (для моего уровня в JS на данный момент) не читаем, так что дальше не продвинуться. В общем, придется все равно велосипед изобретать, видимо).
0
25.05.2014, 02:28
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
25.05.2014, 02:28
Помогаю со студенческими работами здесь

Странное поведение обработчика событий
Доброго всем времени суток. Сегодня наткнулся на необъяснимую для меня штуку. Коротко: Есть...

Странное поведение вложенной функции
Добрый день! Ситуация следующая: есть табличка <table border="1px"> <thead> ...

странное поведение Jquery и prompt()
Добрый день. У меня возникла довольно странная проблема с Jquery. Мне нужна была мини функция,...

странное поведение $.addClass методом
вот так все работает - анимация бекграунда в топ-меню <!DOCTYPE html> <html> <head> <meta...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
7
Ответ Создать тему
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru