Как запустить событие с ExtJS для всех элементов HTML данного класса - PullRequest
2 голосов
/ 13 августа 2010

Я хочу симулировать щелчок мышью по всем элементам данного класса («x-grid3-col-value»).Мне не удалось сделать это с ExtJS, так как функция «fireEvent» применяется только к компонентам ExtJS.Как я мог это сделать?

Ответы [ 2 ]

3 голосов
/ 18 августа 2010

Все предметы с этим классом вы получите следующим образом:

var items = Ext.query('.x-grid3-col-value');

Это даст вам массив всех предметов.Затем вы можете перейти к каждому элементу и поместить обработчик на каждый элемент:

    Ext.each(items, function (item) {
        item = Ext.get(item);

        item.on('click', function () {  
            //'click' or 'dblclick' or 'mouseover'
            //console.log(item);
            //Do whatever you want
        }, this);
    }, this);
1 голос
/ 18 августа 2010

Я использовал этот фрагмент, который довольно уродливый, но работает.

function getElementsByClassName(classname, node) {
    if (!node) {
        node = document.getElementsByTagName('body')[0];
    }
    var a = [], re = new RegExp('\\b' + classname + '\\b');
    els = node.getElementsByTagName('*');
    for ( var i = 0, j = els.length; i < j; i++) {
        if (re.test(els[i].className)) {
            a.push(els[i]);
        }
    }
    return a;
}

HTMLElement.prototype.click = function() {
    var evt = this.ownerDocument.createEvent('MouseEvents');
    evt.initMouseEvent('click', true, true, this.ownerDocument.defaultView, 1,
            0, 0, 0, 0, false, false, false, false, 0, null);
    this.dispatchEvent(evt);
}

var elts = getElementsByClassName("x-grid3-col-value", window.innerHTML);
var i = 0;

while (i < elts.length) {
    var elt = elts[i];
    elt.click();
    i++;
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...