Вы можете передать саму функцию, например:
function preloadImage(callback) {
varLink=".... link to my picture..."
$("#picture").one("load", callback).attr("src", varLink);
}
Затем вы можете вызвать его, передав функцию, например
function doSomething() {
alert("I'm loaded!, my src is: " + this.src);
}
preloadImage(doSomething);
Возможно, вы захотите также передать ссылку на изображение, мне не ясно из вашего примера, но, скорее всего, вы захотите, вот пример, с анонимной функцией:
//define it
function preloadImage(imageUrl, callback) {
$("#picture").one("load", callback).attr("src", imageUrl);
}
//example call
preloadImage('myImage.jpg', function () {
alert("I'm loaded!, my src is: " + this.src);
});
И последнее, о чем следует помнить: вам нужно связать обработчик событий load
до , задав src
, чтобы он работал во всех случаях (например, из кеша), как Я выше.
Редактирование, добавление версии для комментариев:
function preloadImage(callback) {
varLink=".... link to my picture..."
$("#picture").one("load", function() {
callback.apply(this, arguments);
$('#ajax-loader').hide();
}).attr("src", varLink);
}
Также есть альтернатива, сделайте ее простой и свяжите функцию «каждый раз» отдельно, например:
//this handler happens on all future loads
$("#picture").load(function() { $('#ajax-loader').hide(); });
//this handler runs just once for this load
function preloadImage(callback) {
varLink=".... link to my picture..."
$("#picture").one("load", callback).attr("src", varLink);
}