Вы можете сделать это с помощью jquery? - PullRequest
2 голосов
/ 02 марта 2009

Возможно ли это сделать из класса?

   $("#" + field).click(this.validate);

Так что, в основном, я хочу передать функцию объекта, которая должна выполняться при каждом щелчке. Кроме того, если существует более 1 экземпляра этого объекта, то должен быть выполнен правильный экземпляр (т. Е. Тот, который выполняет этот код для данного поля).

Ответы [ 4 ]

3 голосов
/ 02 марта 2009

Я не уверен насчет легкого пути, но вы всегда можете пойти по маршруту закрытия:

var that = this;
$("#" + field).click(function() {
    that.validate();
});
1 голос
/ 02 марта 2009

Возможно ли это сделать из класса?

$ ("#" + поле) .click (this.validate);

«this.validate» проблематично. JavaScript не имеет связанных методов, поэтому, когда вы передаете эту ссылку, он указывает только на простую функцию. При вызове «это» будет установлено неправильно. См. ALA для довольно подробного обсуждения проблемы потери связывания.

Некоторые фреймворки предоставляют встроенную функциональность привязки методов; jQuery этого не делает, поскольку он имеет тенденцию концентрироваться больше на замыканиях, чем на объектах JavaScript. В любом случае создать связывающую оболочку с помощью замыкания довольно просто; Ответ Андрея - обычный подход для пользователей jQuery.

Единственное, на что нужно обращать внимание с замыканиями для обработчиков событий (независимо от того, используете вы jQuery или нет), это то, что это вызывает утечку памяти в IE. Для простых, недолговечных веб-страниц вам может быть все равно.

0 голосов
/ 02 марта 2009

Внутри класса вам, как правило, лучше использовать функцию .find.

var child = this.find('.someChildClass');
var child2 = this.find('#someChildId');
0 голосов
/ 02 марта 2009

Да, это возможно.

10 минут назад писал фрагмент кода, потому что у меня была именно эта проблема

$("div.myalarms_delete").click(function(){
    var mid = this.id;
    $("li#"+mid).fadeOut("fast");
});

div.myalarms_delete также как идентификатор, который мне нужен

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...