#javascript #jquery #callback
#javascript #jquery #обратный вызов
Вопрос:
У меня проблема с пониманием того, как работают функции обратного вызова.
Я использую JCrop для обрезки множества изображений на странице. JCrop написан под впечатлением, что может быть только 1 изображение, которое необходимо обрезать:
jQuery(функция() {
CropMe.Jcrop //CropMe is the class holding the image ({ aspectRatio: 1, onSelect: updateCoords }); } });
Когда он обновляет координаты с помощью «onSelect», он выводит координаты в функцию «updateCoords
«чтобы их можно было прочитать в форме позже при отправке:
функция updateCoords(c) {
$(‘.x’).val(c.x);
$(‘.y’).val(c.y);
$(‘.w’).val(c.w);
$(‘.h’).val(c.h); }
проблема в том, что у меня есть МНОГО Jcrops, созданных в соответствии с классом, а не конкретным идентификатором. Поэтому, когда вызывается updateCoords, он не знает, какие значения x, y, w, h обновлять.
Как бы я передал аргумент (в частности, CropMe) через объект option, чтобы я мог изменить 4 соответствующих значения
соответствующий код:jquery.jcrop,js
Ответ №1:
CropMe.Jcrop //CropMe is the class holding the image
({
aspectRatio: 1,
onSelect: function(c) { updateCoords(c, CropMe); }
});
Тогда updateCoords
выглядело бы что-то вроде:
function updateCoords(c, cropMeObject) {
// cropMeObject is the CropMe object
}
Ответ №2:
Если вы хотите, чтобы this
ключевое слово ссылалось на объект CropMe, использование замыкания должно сработать:
CropMe.Jcrop //CropMe is the class holding the image
({
aspectRatio: 1,
onSelect: (function(c) { return updateCoords(c); })(c,this);
});
теперь в функции updateCoords вы можете ссылаться на this
.