Обновите ссылку href в прототипе - PullRequest
0 голосов
/ 23 октября 2010

Я запускаю скрипт-прототип (лайтбокс) и хочу добавить дополнительную ссылку под каждым изображением с URL-адресом страницы, которая меняется с каждым изображением.

Мне удалось добавить элемент a в нужное место, но позже в скрипте мне нужно обновить href ссылки на основе загруженного изображения.

В скрипте есть точка, где изображение вставляется в лайтбокс после загрузки / навигации по лайтбоксу:

showImage: function(){
    this.loading.hide();
    new Effect.Appear(this.lightboxImage, { 
        duration: this.resizeDuration, 
        queue: 'end', 
        afterFinish: (function(){ this.updateDetails(); }).bind(this) 
    });
    this.preloadNeighborImages();
},

После завершения запускается updateDetails, который включает заголовок изображения. Мне показалось, что это идеальное место для обновления ссылки:

updateDetails: function() {
    // if caption is not null
    if (this.imageArray[this.activeImage][1] != ""){
        this.caption.update(this.imageArray[this.activeImage][1]).show();
    }

    // if image is part of set display 'Image x of x' 
    if (this.imageArray.length > 1){
        this.numberDisplay.update( LightboxOptions.labelImage + ' ' + (this.activeImage + 1) + ' ' + LightboxOptions.labelOf + '  ' + this.imageArray.length).show();
    }

/**  slider effect cut from example code for the sake of brevity **/
 }

Я пробовал много вариантов, основанных на кодах, используемых в этих функциях, но, похоже, ничего не работает. Как мне обновить href ссылки с id=toFilePage?

Я подумал, что это будет что-то вроде

this.toFilePage.href.update('http://example.com');

Но, похоже, это не работает ..

1 Ответ

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

Я считаю, что проблема может лежать в этом разделе (начиная со строки 175 в lightbox.js)

(function() {
var ids = 'overlay lightbox outerImageContainer imageContainer lightboxImage hoverNav prevLink nextLink loading loadingLink ' + 'imageDataContainer imageData imageDetails caption numberDisplay bottomNav bottomNavClose';
$w(ids).each(function(id) {
    th[id] = $(id);
});

}) отложить ();.

При этом создаются ссылки на объекты, созданные в разделе «Строитель» над ним. Простое добавление вашего идентификатора в этот список должно помочь.

В противном случае вы также можете получить к нему доступ через $("myIdHere").

...