2013-09-17 3 views
0

Я пытаюсь увидеть, можно ли добавить html-код внутри тега 'alt' изображения либо через html, либо с помощью какого-либо javascript. Я использую fancybox как свою галерею изображений. Я пытаюсь использовать fancybox как форму для отображения изображения и описания изображения, добавления информации со стилем (например, точек маркера и перерывов), а также добавить кнопку, которая приведет вас к другой странице. В настоящее время у меня есть кнопка, но эта кнопка находится в javascript, поэтому каждое изображение fancybox имеет эту кнопку и тот же url. И я хочу иметь разные ссылки на каждую кнопку на каждом изображении.Есть ли способ добавить HTML-код внутри атрибута 'alt', используя fancybox?

Вот javascript, который у меня есть, который в настоящее время отображает текст alt под изображением в fancybox.

$(".fancybox").fancybox({    
       padding : 0, 
       beforeShow: function() { 
        this.title = $(this.element).attr('title'); 
        this.title = '<h4>' + this.title + '</h4>' + '<div style="width:100%; height: 150px; overflow: auto;">' + $(this.element).parent().find('img').attr('alt') + '<a class="button button-small" href="http://www.google.com"> Sign Up </a>' + '</div>'; 
       }, 
       helpers : { 
        title : { type: 'inside' }, 
       } 
      }); 

HTML, в index.html для этого FancyBox является:

<li class="item-thumbs span3 design"> 
           <!-- Fancybox - Gallery Enabled - Title - Full Image --> 
           <a class="hover-wrap fancybox" data-fancybox-group="gallery" title="The City" href="_include/img/work/full/image-01-full.jpg"> 
            <span class="overlay-img"></span> 
            <span class="overlay-img-thumb font-icon-plus"></span> 
           </a> 
           <!-- Thumb Image and Description --> 
           <img src="_include/img/work/thumbs/image-01.jpg" alt="Lorem ipsum dolor sit amet, consectetur adipiscing elit. Phasellus quis elementum odio. Curabitur pellentesque, dolor vel pharetra mollis."> 
          </li> 
+0

Если вам нужен более сложный fancybox 'title' (с html, гиперссылками и т. Д.), Попробуйте использовать выделенный (скрытый) элемент html, как в этом сообщении http://stackoverflow.com/a/9611664/1055987 – JFK

ответ

3

Атрибут alt (не помечать) по определению простого текста, так что вы вставить там будет рассматриваться как обычный текст (без разметки) браузерами. Если вы возитесь с кодом, который вставляет строки, которые выглядят как теги HTML, в значение атрибута alt, а затем анализируют и обрабатывают их как разметку, это не отличается от аналогичной игры с другими атрибутами.

Атрибут alt имеет четко заданное задание, чтобы выполнять функцию текстовой замены изображения, когда изображение не отображается, но, например, произносимого с помощью устройства Брайля или отображаемого в виде текста. Таким образом, непродуктивно пытаться использовать его для других целей.

Аналогичные соображения относятся к атрибуту title.

Для использования данных, которые будут обрабатываться как HTML, таким образом, гораздо лучше использовать пользовательский атрибут, в частности data-* attribute, например data-desc, или все, что вы предпочитаете. У них нет обработки по умолчанию в браузерах или поисковых системах, поэтому они безопасны для использования в личных целях.

+0

спасибо. я буду играть с ним. – marcopolo

+0

@marcopolo: если вы хотите использовать атрибуты 'data- *' (html5), здесь есть несколько примеров http://stackoverflow.com/a/12357445/1055987, однако они могут не подходить для включения тегов html, поэтому см. Мои комментируйте свой вопрос для лучшего варианта. – JFK

+0

@ Jukka: Итак, я немного исследовал использование атрибутов data- * и попробовал это на своем веб-сайте, и это сработало! Теперь я могу добавить любой атрибут html в новый атрибут «описание данных», и он полностью смещает его. В файле Javascript я заменил: ... $ (this.element) .parent(). Find ('img'). Attr ('alt') + ... с $ (this.element) .parent() .find ('img'). attr ('data-description') + – marcopolo

 Смежные вопросы

  • Нет связанных вопросов^_^