Перечислите все события JavaScript, обеспеченные электричеством на странице с помощью jQuery

Установленные модули Odoo импортируются, как уже упоминалось в комментарии. Так что, если вы не import определите ваши модели. Например, предположим, что файлы определения модели .py организованы следующим образом:

root_addon_directory/
__init__.py

    models/
    __init__.py
    my_model.py

Затем вы можете импортировать определение модели с помощью относительного импорта пути следующим образом:

root_addon_directory __init__.py содержимое файла

from . import models

каталог моделей __init__.py содержимое файла

from . import my_model
45
задан Martin 24 January 2013 в 18:19
поделиться

2 ответа

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

(function($) {
    $.eventReport = function(selector, root) {
        var s = [];
        $(selector || '*', root).andSelf().each(function() {
            // the following line is the only change
            var e = $.data(this, 'events');
            if(!e) return;
            s.push(this.tagName);
            if(this.id) s.push('#', this.id);
            if(this.className) s.push('.', this.className.replace(/ +/g, '.'));
            for(var p in e) {
                var r = e[p],
                    h = r.length - r.delegateCount;
                if(h)
                    s.push('\n', h, ' ', p, ' handler', h > 1 ? 's' : '');
                if(r.delegateCount) {
                    for(var q = 0; q < r.length; q++)
                        if(r[q].selector) s.push('\n', p, ' for ', r[q].selector);
                }
            }
            s.push('\n\n');
        });
        return s.join('');
    }
    $.fn.eventReport = function(selector) {
        return $.eventReport(selector, this);
    }
})(jQuery);

, и вы можете назвать это:

// all events
alert($.eventReport());

// just events on inputs
alert($.eventReport('input')); 

// just events assigned to this element
alert($.eventReport('#myelement')); 

// events assigned to inputs in this element
alert($.eventReport('input', '#myelement')); 
alert($('#myelement').eventReport('input')); // same result

// just events assigned to this element's children
alert($('#myelement').eventReport()); 
alert($.eventReport('*', '#myelement'); // same result

ОБНОВЛЕНИЕ: Я добавил подсчет обработчиков и некоторую информацию о делегированных событиях к выводу вышеуказанной функции.

ОБНОВЛЕНИЕ (24.08.2012): Хотя вышеуказанная функция все еще работает в jQuery 1.7.2 и ниже, jQuery больше не сохраняет объект события в jQuery.data (elem, 'events') и , если вы используете jQuery 1.8 или новее Вы больше не сможете использовать вышеуказанную функцию!

В обмен на jQuery.data (elem, 'events') теперь вы можете использовать jQuery._data (elem, 'events'). ) . Обновление вышеупомянутой функции будет выглядеть следующим образом:

(function($) {
    $.eventReport = function(selector, root) {
        var s = [];
        $(selector || '*', root).addBack().each(function() {
            // the following line is the only change
            var e = $._data(this, 'events');
            if(!e) return;
            s.push(this.tagName);
            if(this.id) s.push('#', this.id);
            if(this.className) s.push('.', this.className.replace(/ +/g, '.'));
            for(var p in e) {
                var r = e[p],
                    h = r.length - r.delegateCount;
                if(h)
                    s.push('\n', h, ' ', p, ' handler', h > 1 ? 's' : '');
                if(r.delegateCount) {
                    for(var q = 0; q < r.length; q++)
                        if(r[q].selector) s.push('\n', p, ' for ', r[q].selector);
                }
            }
            s.push('\n\n');
        });
        return s.join('');
    }
    $.fn.eventReport = function(selector) {
        return $.eventReport(selector, this);
    }
})(jQuery);

ОБНОВЛЕНИЕ (25.04.2013): andSelf () устарело с 1.8.x http://bugs.jquery.com / ticket / 9800 , я заменил на addBack () .

92
ответ дан fcortes 26 November 2019 в 21:04
поделиться

Могу поспорить, что вы можете пройти DOM и проверить атрибут события на каждом элементе, создающем список ... но я никогда не пробовал.

0
ответ дан Tom Ritter 26 November 2019 в 21:04
поделиться
Другие вопросы по тегам:

Похожие вопросы: