Вопрос

Можно ли это сделать внутри класса?

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

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

Это было полезно?

Решение

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

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

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

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

Другие советы

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

var that = this;
$("#" + field).click(function() {
    that.validate();
});

Можно ли это сделать внутри класса?

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

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

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

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

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

var child = this.find('.someChildClass');
var child2 = this.find('#someChildId');
Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top