Вы можете авторизоваться через ВКонтакте, Фейсбук и оставить комментарий


Как проверить есть ли событие (jQuery)

Чтобы проверить висит ли на элементе jQuery какое-либо событие сперва нужно получить список всех событий, а затем проверить есть ли в этом список искомое событие.

Функции eventsList(), checkEvent()

В примере реализовано 2 функции: eventsList(element) — получение списка событий и checkEvent(element, eventname) — проверка наличия события в элементе.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
<!DOCTYPE html>
<html>
<head>
    <title>Как проверить есть ли событие (jQuery)</title>
    <script src="/js/jquery.js"></script>
    <script>
        /**
         * Получить список событий, которые висят на элементе
         * @param object element jQuery элемент
         * @returns object|false
         */

        function eventsList(element) {
            // В разных версиях jQuery список событий получается по-разному
            var events = element.data('events');
            if (events !== undefined) return events;

            events = $.data(element, 'events');
            if (events !== undefined) return events;

            events = $._data(element, 'events');
            if (events !== undefined) return events;

            events = $._data(element[0], 'events');
            if (events !== undefined) return events;

            return false;
        }

        /**
         * Проверить есть ли событие eventname на элементе element
         * @param object element jQuery-элемент
         * @param string eventname название события
         * @returns bool
         */

        function checkEvent(element, eventname) {
            var events,
                ret = false;

            events = eventsList(element);
            if (events) {
                $.each(events, function(evName, e) {
                    if (evName == eventname) {
                        ret = true;
                    }
                });
            }

            return ret;
        }

        $(document).ready(function(){
            var b1 = $('#b1'),
                b2 = $('#b2');
            b1.bind('click'function(){
                alert('You clicked ' + $(this).attr('id'));
            });

            $('#check').click(function(){
                var b1 = $('#b1'),
                    b2 = $('#b2');

                if (checkEvent(b1, 'click')) {
                    alert('Кнопка "Кнопка #1" СОДЕРЖИТ событие CLICK');
                } else {
                    alert('Кнопка "Кнопка #1" НЕ СОДЕРЖИТ событие CLICK');
                }

                if (checkEvent(b2, 'click')) {
                    alert('Кнопка "Кнопка #2" СОДЕРЖИТ событие CLICK');
                } else {
                    alert('Кнопка "Кнопка #2" НЕ СОДЕРЖИТ событие CLICK');
                }
            });
        });

    
</script>
</head>

<body>
    <table>
        <tr>
            <td>
                <input type="button" id="b1" value="Кнопка #1"/>
            </td>
            <td>
                <input type="button" id="b2" value="Кнопка #2"/>
            </td>
        </tr>
        <tr>
            <td colspan="2">
                <input type="button" id="check" value="Проверить события click"/>
            </td>
        </tr>
    </table>
</body>
</html>

Результат

В результате при нажатии на кнопку Проверить события click, будет последовательно показано два алерт-сообщения:

1Кнопка "Кнопка #1" СОДЕРЖИТ событие CLICK

и

1Кнопка "Кнопка #2" НЕ СОДЕРЖИТ событие CLICK
Опубликовано: 09 октября 2012  ·  Автор: Артём Фёдоров  ·  8010 просмотров

Полезные статьи по теме

Категория

ГлавнаяПрограммированиеJavaScriptБиблиотекиjQueryКак проверить есть ли событие (jQuery)

Чтобы оставить комментарий нужно авторизоваться на сайте
или войти через ВКонтакте или Фейсбук

Войти через ФейсбукВойти через Твиттер

Комментарии

jQuery, Библиотеки, JavaScript, Программирование

© 2010-2017 expange.ru
При полном или частичном копировании статей сайта, ссылка на источник обязательна.

Хотите узнать больше информации, пишите на: artem@expange.ru

Полезное онлайн  ·  Новости  ·  Изображения  ·  Статьи по датам

О проекте  ·  Правила пользования  ·  Представительства

Благодарности и пожелания