Как передать аргументы обработчику события? - PullRequest
1 голос
/ 29 октября 2010
var MyObject = {
    init: function () {
        this.items = $('#menu a');

        for (var i = 0; i < this.items.length; i++) {
            $(this.items[i]).bind('click', this.doSomething);
        }
    },

    doSomething: function (index) {
        alert(this.items[index].innerHTML);
        // alerts: One, Two, Three
    }
};

Мне нужно передать индекс (i)

Редактировать: Иллюстрация: http://jsfiddle.net/mUjAj/

Ответы [ 2 ]

1 голос
/ 29 октября 2010

Здесь нет необходимости передавать индекс, так как this будет ссылаться на элемент, по которому вы щелкнули внутри обработчика события click, вы можете просто сделать это:

var MyObject = {
    init: function () {
        this.items = $('#menu a');
        this.items.bind('click', this.doSomething);
    },    
    doSomething: function () {
        alert(this.innerHTML);
    }
};

Вы можете проверить это здесь .

0 голосов
/ 29 октября 2010

Попробуйте и посмотрите, работает ли он:

var MyObject = {
    init: function () {
        this.items = $('#menu a');

        for (var i = 0; i < this.items.length; i++) {
            $(this.items[i]).bind('click', {index:i}, this.doSomething);
        }
    },

    doSomething: function (e) {
        alert(e.data.index);

    }
};
...