27 ноября 2012 г.

Контроль создания миниатюр Highslide JS


При создании полоски с миниатюрами (thumbstrip) Highslide JS по умолчанию полностью копирует содержимое соответсвующего ярлыка (тега). Но иногда это приводит к нежелательным результатам.

В моем случае требовалось в ярлыке разместить подпись к изображению.
<a href="путь до полного изображения" сlass="highslide" onclick="return hs.expand(this, config1)">
 <img src="путь до миниатюры" alt="описание" width="100" height="75" title="Щелкните для увеличения" class="target-image">
 <div class="gallery definition">описание</div>
</a>



Это приводит к тому, что подписи дублируются и в полоске миниаютюр, а так как миниатюрки в Highslide JS -- это тоже ссылки, в итоге получаем нечто такое:
<a href="путь до изображения" title="" class="highslide-active-anchor">
 <img src="путь до миниютюры" alt="описание" width="100" height="75" title="Щелкните для увеличения" class="target-image">
 <div class="gallery definition">описание</div>
</a>


Чтобы убрать копии ссылок я воспользовался скриптом jQuery и Highslide JS API:
импортирую скрипт jqery: в заголовке
<script type="text/javascript" src="assets/js/jquery-1.8.3.min.js"></script>

В основной javacript файл добавляю
hs.stripItemFormatter = function(a) {
        var out = $(a).clone();
        out.find('.definition').remove();
        return out.html();
    }

Здесь идет обращение к Highslide JS API и замещается метод создания миниатюр:

hs.stripItemFormatter = function(a) {
        // ...
    }


создаю объект в который клонирую входящий объект a, которым является сам тег <a>, для которого создается миниатюра:

var out = $(a).clone();



затем нахожу в клоне элемент с описанием и удаляю его, у меня поиск идет по классу, так как блок описания имеет класс definition:

out.find('.definition').remove();



после проделанных манипуляций возвращаю объект:

return out.html();



Теперь полоска с миниатюрами приняла нормальный вид:

Вы для своих нужд можете проделывать другие манипуляции.

Может быть, кому нибудь пригодится :)